(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPFILTER_FMRI='> name:IPFILTER_FMRI)
          op: assign_op.Equal
          rhs: {(DQ <'svc:/network/ipfilter:default'>)}
          spids: [73]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ETC_IPF_DIR='> name:ETC_IPF_DIR)
          op: assign_op.Equal
          rhs: {<'/etc/ipf'>}
          spids: [78]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPNATCONF='> name:IPNATCONF)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    words: [
                      {<'/usr/bin/svcprop'>}
                      {<-p>}
                      {<'config/ipnat_config_file'>}
                      {($ Id.VSub_DollarName IPFILTER_FMRI)}
                    ]
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    more_env: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [81]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPNATCONF='> name:IPNATCONF)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ETC_IPF_DIR) <'/ipnat.conf'>}
                  spids: [118]
                )
              ]
              redirects: []
            )
          ]
          spids: [102 115]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPPOOLCONF='> name:IPPOOLCONF)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    words: [
                      {<'/usr/bin/svcprop'>}
                      {<-p>}
                      {<'config/ippool_config_file'>}
                      {($ Id.VSub_DollarName IPFILTER_FMRI)}
                    ]
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    more_env: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [124]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPPOOLCONF='> name:IPPOOLCONF)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ETC_IPF_DIR) <'/ippool.conf'>}
                  spids: [161]
                )
              ]
              redirects: []
            )
          ]
          spids: [145 158]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VAR_IPF_DIR='> name:VAR_IPF_DIR)
          op: assign_op.Equal
          rhs: {<'/var/run/ipf'>}
          spids: [167]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPFILCONF='> name:IPFILCONF)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf.conf'>}
          spids: [170]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6FILCONF='> name:IP6FILCONF)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf6.conf'>}
          spids: [174]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPFILOVRCONF='> name:IPFILOVRCONF)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf_ovr.conf'>}
          spids: [178]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6FILOVRCONF='> name:IP6FILOVRCONF)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf6_ovr.conf'>}
          spids: [182]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF_LOCK='> name:IPF_LOCK)
          op: assign_op.Equal
          rhs: {<'/var/run/ipflock'>}
          spids: [186]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONF_FILES='> name:CONF_FILES)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [189]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONF6_FILES='> name:CONF6_FILES)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [193]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NAT_FILES='> name:NAT_FILES)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [197]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF_SUFFIX='> name:IPF_SUFFIX)
          op: assign_op.Equal
          rhs: {(DQ <.ipf>)}
          spids: [201]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF6_SUFFIX='> name:IPF6_SUFFIX)
          op: assign_op.Equal
          rhs: {(DQ <.ipf6>)}
          spids: [206]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NAT_SUFFIX='> name:NAT_SUFFIX)
          op: assign_op.Equal
          rhs: {(DQ <.nat>)}
          spids: [211]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CURRENT_VERSION='> name:CURRENT_VERSION)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [220]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF_FMRI='> name:IPF_FMRI)
          op: assign_op.Equal
          rhs: {(DQ <'svc:/network/ipfilter:default'>)}
          spids: [224]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INETDFMRI='> name:INETDFMRI)
          op: assign_op.Equal
          rhs: {(DQ <'svc:/network/inetd:default'>)}
          spids: [229]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RPCBINDFMRI='> name:RPCBINDFMRI)
          op: assign_op.Equal
          rhs: {(DQ <'svc:/network/rpc/bind:default'>)}
          spids: [234]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SMF_ONLINE='> name:SMF_ONLINE)
          op: assign_op.Equal
          rhs: {(DQ <online>)}
          spids: [240]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SMF_MAINT='> name:SMF_MAINT)
          op: assign_op.Equal
          rhs: {(DQ <maintenance>)}
          spids: [245]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SMF_NONE='> name:SMF_NONE)
          op: assign_op.Equal
          rhs: {(DQ <none>)}
          spids: [250]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONTEXT_PG='> name:FW_CONTEXT_PG)
          op: assign_op.Equal
          rhs: {(DQ <firewall_context>)}
          spids: [256]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'METHOD_PROP='> name:METHOD_PROP)
          op: assign_op.Equal
          rhs: {(DQ <ipf_method>)}
          spids: [261]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONFIG_PG='> name:FW_CONFIG_PG)
          op: assign_op.Equal
          rhs: {(DQ <firewall_config>)}
          spids: [267]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'POLICY_PROP='> name:POLICY_PROP)
          op: assign_op.Equal
          rhs: {(DQ <policy>)}
          spids: [272]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'APPLY2_PROP='> name:APPLY2_PROP)
          op: assign_op.Equal
          rhs: {(DQ <apply_to>)}
          spids: [277]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'APPLY2_6_PROP='> name:APPLY2_6_PROP)
          op: assign_op.Equal
          rhs: {(DQ <apply_to_6>)}
          spids: [282]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXCEPTIONS_PROP='> name:EXCEPTIONS_PROP)
          op: assign_op.Equal
          rhs: {(DQ <exceptions>)}
          spids: [287]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXCEPTIONS_6_PROP='> name:EXCEPTIONS_6_PROP)
          op: assign_op.Equal
          rhs: {(DQ <exceptions_6>)}
          spids: [292]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGET_PROP='> name:TARGET_PROP)
          op: assign_op.Equal
          rhs: {(DQ <target>)}
          spids: [297]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGET_6_PROP='> name:TARGET_6_PROP)
          op: assign_op.Equal
          rhs: {(DQ <target_6>)}
          spids: [302]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BLOCKPOL_PROP='> name:BLOCKPOL_PROP)
          op: assign_op.Equal
          rhs: {(DQ <block_policy>)}
          spids: [307]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONFIG_DEF_PG='> name:FW_CONFIG_DEF_PG)
          op: assign_op.Equal
          rhs: {(DQ <firewall_config_default>)}
          spids: [313]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONFIG_OVR_PG='> name:FW_CONFIG_OVR_PG)
          op: assign_op.Equal
          rhs: {(DQ <firewall_config_override>)}
          spids: [318]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CUSTOM_FILE_PROP='> name:CUSTOM_FILE_PROP)
          op: assign_op.Equal
          rhs: {(DQ <custom_policy_file>)}
          spids: [323]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CUSTOM_FILE_6_PROP='> name:CUSTOM_FILE_6_PROP)
          op: assign_op.Equal
          rhs: {(DQ <custom_policy_file_6>)}
          spids: [328]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPEN_PORTS_PROP='> name:OPEN_PORTS_PROP)
          op: assign_op.Equal
          rhs: {(DQ <open_ports>)}
          spids: [333]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_HOST='> name:PREFIX_HOST)
          op: assign_op.Equal
          rhs: {(DQ <'host:'>)}
          spids: [339]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_NET='> name:PREFIX_NET)
          op: assign_op.Equal
          rhs: {(DQ <'network:'>)}
          spids: [344]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_POOL='> name:PREFIX_POOL)
          op: assign_op.Equal
          rhs: {(DQ <'pool:'>)}
          spids: [349]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_IF='> name:PREFIX_IF)
          op: assign_op.Equal
          rhs: {(DQ <'if:'>)}
          spids: [354]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_CONFIG='> name:GLOBAL_CONFIG)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [360]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_POLICY='> name:GLOBAL_POLICY)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [364]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'GLOBAL_BLOCK_POLICY='>
              name: GLOBAL_BLOCK_POLICY
            )
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [368]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVINFO='> name:SERVINFO)
          op: assign_op.Equal
          rhs: {<'/usr/lib/servinfo'>}
          spids: [373]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: global_get_prop_value
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target_pg='> name:target_pg)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [408]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prop='> name:prop)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                  spids: [412]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} {<-a>} {(DQ ($ Id.VSub_Number 1))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                  {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extra_pg='> name:extra_pg)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)}
                      spids: [462]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extra_pg='> name:extra_pg)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)}
                      spids: [469]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'value='> name:value)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {($ Id.VSub_DollarName GLOBAL_CONFIG)})
                              (C {<awk>} 
                                {
                                  (SQ <'{\n'> <'\t\tfound=0\n'> <'\t\tfor (i=1; i<=NF; i++) {\n'> 
                                    <'\t\t\tif (found == 1) {\n'> <'\t\t\t\tif (index($i, target_pg) == 1 || index($i, extra_pg) == 1)\n'> <'\t\t\t\t\tbreak;\n'> <'\n'> 
                                    <'\t\t\t\tprint $i;\n'> <'\t\t\t}\n'> <'\n'> <'\t\t\tif (split($i, values, "/") < 2)\n'> <'\t\t\t\tcontinue;\n'> <'\n'> 
                                    <'\t\t\tif (values[1] == target_pg && values[2] == prop)\n'> <'\t\t\t\tfound=1;\n'> <'\t\t}\n'> <'\t}'>
                                  )
                                } {<Id.Lit_VarLike 'target_pg='> ($ Id.VSub_DollarName target_pg)} 
                                {<Id.Lit_VarLike 'prop='> ($ Id.VSub_DollarName prop)} {<Id.Lit_VarLike 'extra_pg='> ($ Id.VSub_DollarName extra_pg)}
                              )
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [474]
                )
              ]
              redirects: []
            )
            (C {<echo>} {(DQ ($ Id.VSub_DollarName value))})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: global_init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_CONFIG='> name:GLOBAL_CONFIG)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                words: [
                                  {<svcprop>}
                                  {<-p>}
                                  {(${ Id.VSub_Name FW_CONFIG_OVR_PG)}
                                  {<-p>}
                                  {(${ Id.VSub_Name FW_CONFIG_DEF_PG)}
                                  {($ Id.VSub_DollarName IPF_FMRI)}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                              (C {<awk>} {(SQ <'{$2=" "; print $0}'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [593]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_POLICY='> name:GLOBAL_POLICY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} 
                            {($ Id.VSub_DollarName POLICY_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [632]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'GLOBAL_BLOCK_POLICY='>
                      name: GLOBAL_BLOCK_POLICY
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} 
                            {($ Id.VSub_DollarName BLOCKPOL_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [644]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_config_pg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName IPF_FMRI))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ ($ Id.VSub_DollarName FW_CONFIG_DEF_PG))})]
                  spids: [679 696]
                )
              ]
              else_action: [(C {<echo>} {(DQ ($ Id.VSub_DollarName FW_CONFIG_PG))})]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_policy
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [742]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<svcprop>}
                {<-p>}
                {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name POLICY_PROP)}
                {($ Id.VSub_Number 1)}
              ]
              redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_block_policy
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [792]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<svcprop>}
                {<-p>}
                {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name BLOCKPOL_PROP)}
                {($ Id.VSub_Number 1)}
              ]
              redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_exceptions
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [836]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exceptions='> name:exceptions)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-p>}
                              {($ Id.VSub_DollarName config_pg) <'/'> 
                                (${ Id.VSub_Name EXCEPTIONS_PROP)
                              }
                              {($ Id.VSub_Number 1)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [846]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName exceptions)})
                (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_exceptions_6
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [900]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exceptions6='> name:exceptions6)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-p>}
                              {($ Id.VSub_DollarName config_pg) <'/'> 
                                (${ Id.VSub_Name EXCEPTIONS_6_PROP)
                              }
                              {($ Id.VSub_Number 1)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [910]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName exceptions6)})
                (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_apply2_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [964]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2='> name:apply2)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-p>}
                              {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name APPLY2_PROP)}
                              {($ Id.VSub_Number 1)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [974]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName apply2)})
                (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_apply2_6_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1028]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2_6='> name:apply2_6)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-p>}
                              {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name APPLY2_6_PROP)}
                              {($ Id.VSub_Number 1)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1038]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName apply2_6)})
                (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_target_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1092]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-p>}
                              {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name TARGET_PROP)}
                              {($ Id.VSub_Number 1)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1102]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName target))} {<-o>} 
                  {(DQ ($ Id.VSub_DollarName target))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target)
                      op: assign_op.Equal
                      rhs: {<any>}
                      spids: [1147]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName target)})
                (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_target_6_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_config_pg>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1184]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target6='> name:target6)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-p>}
                              {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name TARGET_6_PROP)}
                              {($ Id.VSub_Number 1)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1194]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName target6))} {<-o>} 
                  {(DQ ($ Id.VSub_DollarName target6))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target6='> name:target6)
                      op: assign_op.Equal
                      rhs: {<any>}
                      spids: [1239]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName target6)})
                (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_ipf_dir
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName VAR_IPF_DIR)} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{<mkdir>} {($ Id.VSub_DollarName VAR_IPF_DIR)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: fmri_to_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<check_ipf_dir>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fprefix='> name:fprefix)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name VAR_IPF_DIR) <'/'> 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_Number 1)})
                                (C {<tr>} {<-s>} {(SQ <'/:'>)} {(SQ <__>)})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                  spids: [1326]
                )
              ]
              redirects: []
            )
            (C {<echo>} {(DQ (${ Id.VSub_Name fprefix) (${ Id.VSub_Number 2))})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: service_is_enabled
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'enabled_ovr='> name:enabled_ovr)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-c>}
                              {<-p>}
                              {<'general_ovr/enabled'>}
                              {($ Id.VSub_Number 1)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1402]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName enabled_ovr))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName enabled_ovr))} 
                          {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                  spids: [1421 1434]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'enabled='> name:enabled)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<svcprop>} {<-c>} {<-p>} {<'general/enabled'>} {($ Id.VSub_Number 1)}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1468]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName enabled))} {<-a>} 
                  {(DQ ($ Id.VSub_DollarName enabled))} {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: service_check_state
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<svcprop>} {<-p>} {<'restarter/next_state'>} {($ Id.VSub_Number 1)})
                                right: <Id.Backtick_Right '`'>
                              )
                            )
                          } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName SMF_NONE))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: (command.DoGroup children:[(C {<sleep>} {<1>})])
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<svcprop>} {<-p>} {<'restarter/state'>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    )
                  } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_IP
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<value_is_interface>} {($ Id.VSub_Number 1)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ ($ Id.VSub_Number 1))})
                (C {<sed>} {<-n>} {<-e>} 
                  {
                    (DQ <'s,^'> (${ Id.VSub_Name PREFIX_POOL) <Id.Lit_BadBackslash '\\'> <'(.*'> 
                      <Id.Lit_BadBackslash '\\'> <'),pool/'> <Id.Lit_BadBackslash '\\'> <'1,p'>
                    )
                  } {<-e>} 
                  {
                    (DQ <'s,^'> (${ Id.VSub_Name PREFIX_HOST) <Id.Lit_BadBackslash '\\'> <'(.*'> 
                      <Id.Lit_BadBackslash '\\'> <'),'> <Id.Lit_BadBackslash '\\'> <'1,p'>
                    )
                  } {<-e>} 
                  {
                    (DQ <'s,^'> (${ Id.VSub_Name PREFIX_NET) <Id.Lit_BadBackslash '\\'> <'(.*'> 
                      <Id.Lit_BadBackslash '\\'> <'),'> <Id.Lit_BadBackslash '\\'> <'1,p'>
                    )
                  } {<-e>} {(DQ <'s,^any,any,p'>)}
                )
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_interface
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<value_is_interface>} {($ Id.VSub_Number 1)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'scratch='> name:scratch)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_Number 1))})
                              (C {<sed>} {<-e>} {(DQ <'s/^'> (${ Id.VSub_Name PREFIX_IF) <'//'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1770]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{<ifconfig>} {($ Id.VSub_DollarName scratch)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName scratch)})
                (C {<sed>} {<-e>} {(SQ <'s/:.*//'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: value_is_interface
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_Number 1)})
                (command.Simple
                  words: [{<grep>} {(DQ <'^'> (${ Id.VSub_Name PREFIX_IF))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: remove_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [{<ipf>} {($ Id.VSub_Number 2)} {<-r>} {<-f>} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: remove_nat_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [{<ipnat>} {<-r>} {<-f>} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_ipf_syntax
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<ipf>} {($ Id.VSub_Number 2)} {<-n>} {<-f>} {($ Id.VSub_Number 1)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_nat_syntax
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<ipnat>} {<-n>} {<-f>} {($ Id.VSub_Number 1)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: unique_ports
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_Star '*')})
                (C {<xargs>} {<-n>} {<1>} {<echo>})
                (C {<sort>} {<-u>})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: file_get_ports
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{<ipf>} {($ Id.VSub_Number 2)} {<-n>} {<-v>} {<-f>} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (C {<sed>} {<-n>} {<-e>} {(SQ <'s/.*to.* port = \\([a-z0-9]*\\).*/\\1/p'>)})
                (C {<uniq>})
                (C {<awk>} {(SQ <'{if (length($0) > 1) {printf("%s ", $1)}}'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_active_ports
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{<ipfstat>} {($ Id.VSub_Number 1)} {<-io>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (C {<sed>} {<-n>} {<-e>} {(SQ <'s/.*to.* port = \\([a-z0-9]*\\).*/\\1/p'>)})
                (C {<uniq>})
                (C {<awk>} {(SQ <'{if (length($0) > 1) {printf("%s ",$1)}}'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: sets_check_duplicate
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 1))} {<-o>} {<-z>} 
                  {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.ForEach
              iter_names: [p]
              iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_names: [ap]
                      iterable: (for_iter.Words words:[{($ Id.VSub_Number 2)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName p))} 
                                  {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName ap))} {<Id.Lit_RBracket ']'>}
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: update_check_ipf_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lports='> name:lports)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<file_get_ports>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2300]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lactive_ports='> name:lactive_ports)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_active_ports>} {($ Id.VSub_Number 2)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2312]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<sets_check_duplicate>} {(DQ ($ Id.VSub_DollarName lports))} 
                  {(DQ ($ Id.VSub_DollarName lactive_ports))}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server_port_list='> name:server_port_list)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [2342]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server_port_list_6='> name:server_port_list_6)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [2346]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: check_ipf_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lports='> name:lports)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<file_get_ports>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2394]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_Equals '='>} 
                              {(DQ <-6>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<sets_check_duplicate>} {(DQ ($ Id.VSub_DollarName lports))} 
                          {(DQ ($ Id.VSub_DollarName server_port_list_6))}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'server_port_list_6='>
                              name: server_port_list_6
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName server_port_list_6) <' '> 
                                ($ Id.VSub_DollarName lports)
                              )
                            }
                          spids: [2444]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2407 2424]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<sets_check_duplicate>} {(DQ ($ Id.VSub_DollarName lports))} 
                      {(DQ ($ Id.VSub_DollarName server_port_list))}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'server_port_list='>
                          name: server_port_list
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ ($ Id.VSub_DollarName server_port_list) <' '> 
                            ($ Id.VSub_DollarName lports)
                          )
                        }
                      spids: [2472]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: prepend_new_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)})
                (command.Pipeline
                  children: [
                    (C {<tail>} {<-r>} {($ Id.VSub_Number 1)})
                    (C {<sed>} {<-e>} {(SQ <'s/^[a-z]/@0 &/'>)})
                    (command.Simple
                      words: [{<ipf>} {($ Id.VSub_Number 2)} {<-f>} {<->}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  negated: F
                  stderr_indices: []
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: append_new_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)})
                (command.Simple
                  words: [{<ipf>} {($ Id.VSub_Number 2)} {<-f>} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: append_new_nat_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<check_nat_syntax>} {($ Id.VSub_Number 1)})
                (command.Simple
                  words: [{<ipnat>} {<-f>} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: tuple_get_port
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'port_str='> name:port_str)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_Number 1))})
                              (command.Simple
                                words: [{<sed>} {<-e>} {(SQ <'s/ //g; s/\\\\//g; s/.*://'>)}]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2619]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName port_str))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {($ Id.VSub_DollarName port_str)})
                (command.Simple
                  words: [{<grep>} {(DQ <->)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName port_str)})
                            (command.Simple
                              words: [{<grep>} {(SQ <'^[0-9]\\{1,5\\}-[0-9]\\{1,5\\}$'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          negated: F
                          stderr_indices: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ports='> name:ports)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} {($ Id.VSub_DollarName port_str)})
                                      (command.Subshell
                                        child: 
                                          (command.CommandList
                                            children: [
                                              (command.Sentence
                                                child: 
                                                  (command.Simple
                                                    words: [{<read>} {<a>} {<b>}]
                                                    redirects: []
                                                    more_env: [
                                                      (env_pair
                                                        name: IFS
                                                        val: {<->}
                                                        spids: [2738]
                                                      )
                                                    ]
                                                    do_fork: T
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                              (command.AndOr
                                                ops: [Id.Op_DAmp Id.Op_DPipe]
                                                children: [
                                                  (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName a)} 
                                                    {
                                                      (word_part.EscapedLiteral
                                                        token: <Id.Lit_EscapedChar '\\-'>
                                                        ch: -
                                                      ) <le>
                                                    } {($ Id.VSub_DollarName b)} {<Id.Lit_RBracket ']'>}
                                                  )
                                                  (C {<echo>} {($ Id.VSub_DollarName a)} 
                                                    {($ Id.VSub_DollarName b)}
                                                  )
                                                  (C {<echo>} {($ Id.VSub_DollarName b)} 
                                                    {($ Id.VSub_DollarName a)}
                                                  )
                                                ]
                                              )
                                            ]
                                          )
                                        redirects: []
                                      )
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [2721]
                        )
                      ]
                      redirects: []
                    )
                    (command.ForEach
                      iter_names: [p]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName ports)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName p)} {<-gt>} {<65535>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                            )
                          ]
                        )
                      redirects: []
                    )
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName ports))})
                  ]
                  spids: [2681 2694]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ ($ Id.VSub_DollarName port_str))})
                        (command.Simple
                          words: [{<grep>} {(SQ <'^[0-9]\\{1,5\\}$'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName port_str)} {<-gt>} {<65535>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                )
                (C {<echo>} {(DQ ($ Id.VSub_DollarName port_str))})
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: tuple_get_proto
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_Number 1))})
                              (command.Simple
                                words: [{<sed>} {<-e>} {(SQ <'s/ //g; s/:.*//'>)}]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2906]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName proto))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_Equals '='>} 
                  {(DQ <tcp>)} {<-o>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_Equals '='>} {(DQ <udp>)} {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {($ Id.VSub_DollarName proto)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: ipf_get_lock
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newpid='> name:newpid)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Dollar '$')}
                  spids: [3002]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {(DQ ($ Id.VSub_DollarName IPF_LOCK) <'/pid'>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'curpid='> name:curpid)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [{<cat>} {($ Id.VSub_DollarName IPF_LOCK) <'/pid'>}]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [3024]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName curpid))} 
                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName newpid))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<ps>} {<-p>} {($ Id.VSub_DollarName curpid)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (command.Simple
                          words: [{<rm>} {<-r>} {($ Id.VSub_DollarName IPF_LOCK)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                    )
                  ]
                  spids: [3007 3021]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<Id.Lit_Colon ':'>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.Simple
                              words: [{<mkdir>} {($ Id.VSub_DollarName IPF_LOCK)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<sleep>} {<1>})
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {($ Id.VSub_DollarName newpid)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName IPF_LOCK) <'/pid'>}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: ipf_remove_lock
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {(DQ ($ Id.VSub_DollarName IPF_LOCK) <'/pid'>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<cat>} {($ Id.VSub_DollarName IPF_LOCK) <'/pid'>})
                                right: <Id.Backtick_Right '`'>
                              )
                            )
                          } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Dollar '$'))} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<rm>} {<-r>} {($ Id.VSub_DollarName IPF_LOCK)})
                      ]
                    )
                  ]
                  spids: [3172 3186]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: custom_set_symlink
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_Number 1))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<check_ipf_dir>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Simple
              words: [{<rm>} {($ Id.VSub_DollarName IPFILCONF)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<ln>} {<-s>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName IPFILCONF)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: custom_set_symlink_6
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_Number 1))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<check_ipf_dir>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Simple
              words: [{<rm>} {($ Id.VSub_DollarName IP6FILCONF)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<ln>} {<-s>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName IP6FILCONF)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: replace_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig='> name:orig)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [3417]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new='> name:new)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                  spids: [3422]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-L>} {(DQ ($ Id.VSub_DollarName orig))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<rm>} {($ Id.VSub_DollarName orig)})
                    (C {<touch>} {($ Id.VSub_DollarName orig)})
                  ]
                  spids: [3440 3453]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<check_ipf_dir>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<mv>} {($ Id.VSub_DollarName new)} {($ Id.VSub_DollarName orig)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: process_server_svc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'service='> name:service)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [3525]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'policy='> name:policy)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_policy>} {(${ Id.VSub_Name service)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3529]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_DollarName service)} 
                            {($ Id.VSub_DollarName IPF_SUFFIX)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3558]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file6='> name:file6)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_DollarName service)} 
                            {($ Id.VSub_DollarName IPF6_SUFFIX)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3570]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName file))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'# '> ($ Id.VSub_DollarName service))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name file)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'# '> ($ Id.VSub_DollarName service))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name file6)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName policy))} {<Id.Lit_Equals '='>} 
                  {(DQ <use_global>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'restarter='> name:restarter)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {<svcprop>}
                              {<-p>}
                              {<'general/restarter'>}
                              {($ Id.VSub_DollarName service)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3660]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName restarter))} 
                              {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName INETDFMRI))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iana_name='> name:iana_name)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {<svcprop>}
                                      {<-p>}
                                      {<'inetd/name'>}
                                      {($ Id.VSub_DollarName service)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [3697]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'isrpc='> name:isrpc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {<svcprop>}
                                      {<-p>}
                                      {<'inetd/isrpc'>}
                                      {($ Id.VSub_DollarName service)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [3714]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3677 3694]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iana_name='> name:iana_name)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                words: [
                                  {<svcprop>}
                                  {<-p>}
                                  {($ Id.VSub_DollarName FW_CONTEXT_PG) <'/name'>}
                                  {($ Id.VSub_DollarName service)}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [3734]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'isrpc='> name:isrpc)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                words: [
                                  {<svcprop>}
                                  {<-p>}
                                  {($ Id.VSub_DollarName FW_CONTEXT_PG) <'/isrpc'>}
                                  {($ Id.VSub_DollarName service)}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [3752]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName iana_name))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName isrpc))} 
                              {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tports='> name:tports)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {($ Id.VSub_DollarName SERVINFO)}
                                      {<-R>}
                                      {<-p>}
                                      {<-t>}
                                      {<-s>}
                                      {($ Id.VSub_DollarName iana_name)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [3852]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tports6='> name:tports6)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {($ Id.VSub_DollarName SERVINFO)}
                                      {<-R>}
                                      {<-p>}
                                      {<-t6>}
                                      {<-s>}
                                      {($ Id.VSub_DollarName iana_name)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [3873]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName tports))} {<-o>} {<-n>} {(DQ ($ Id.VSub_DollarName tports6))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tports='> name:tports)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<unique_ports>} {($ Id.VSub_DollarName tports)} 
                                            {($ Id.VSub_DollarName tports6)}
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [3918]
                                )
                              ]
                              redirects: []
                            )
                            (command.ForEach
                              iter_names: [tport]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName tports)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                                      {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport)} {($ Id.VSub_DollarName file)}
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [3894 3915]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName tports6))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [tport6]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName tports6)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                                      {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport6)} {($ Id.VSub_DollarName file6)} {<_6>}
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [3967 3980]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uports='> name:uports)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {($ Id.VSub_DollarName SERVINFO)}
                                      {<-R>}
                                      {<-p>}
                                      {<-u>}
                                      {<-s>}
                                      {($ Id.VSub_DollarName iana_name)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [4021]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uports6='> name:uports6)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {($ Id.VSub_DollarName SERVINFO)}
                                      {<-R>}
                                      {<-p>}
                                      {<-u6>}
                                      {<-s>}
                                      {($ Id.VSub_DollarName iana_name)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [4042]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName uports))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uports='> name:uports)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<unique_ports>} {($ Id.VSub_DollarName uports)} 
                                            {($ Id.VSub_DollarName uports6)}
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [4079]
                                )
                              ]
                              redirects: []
                            )
                            (command.ForEach
                              iter_names: [uport]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName uports)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                                      {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport)} {($ Id.VSub_DollarName file)}
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [4063 4076]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName uports6))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [uport6]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName uports6)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                                      {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport6)} {($ Id.VSub_DollarName file6)} {<_6>}
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [4128 4141]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [3824 3841]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tport='> name:tport)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {($ Id.VSub_DollarName SERVINFO)}
                              {<-p>}
                              {<-t>}
                              {<-s>}
                              {($ Id.VSub_DollarName iana_name)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<1>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [4203]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} 
                              {(DQ ($ Id.VSub_DollarName tport))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                      {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport)} {($ Id.VSub_DollarName file)}
                    )
                  ]
                  spids: [4222 4243]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tport6='> name:tport6)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {($ Id.VSub_DollarName SERVINFO)}
                              {<-p>}
                              {<-t6>}
                              {<-s>}
                              {($ Id.VSub_DollarName iana_name)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<1>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [4265]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} 
                              {(DQ ($ Id.VSub_DollarName tport6))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                      {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport6)} {($ Id.VSub_DollarName file6)} {<_6>}
                    )
                  ]
                  spids: [4284 4305]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uport='> name:uport)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {($ Id.VSub_DollarName SERVINFO)}
                              {<-p>}
                              {<-u>}
                              {<-s>}
                              {($ Id.VSub_DollarName iana_name)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<1>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [4329]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} 
                              {(DQ ($ Id.VSub_DollarName uport))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                      {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport)} {($ Id.VSub_DollarName file)}
                    )
                  ]
                  spids: [4348 4369]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uport6='> name:uport6)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {($ Id.VSub_DollarName SERVINFO)}
                              {<-p>}
                              {<-u6>}
                              {<-s>}
                              {($ Id.VSub_DollarName iana_name)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<1>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [4391]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} 
                              {(DQ ($ Id.VSub_DollarName uport6))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<generate_rules>} {($ Id.VSub_DollarName service)} 
                      {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport6)} {($ Id.VSub_DollarName file6)} {<_6>}
                    )
                  ]
                  spids: [4410 4431]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: generate_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'service='> name:service)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [4505]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mypolicy='> name:mypolicy)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                  spids: [4509]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 3)}
                  spids: [4513]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'port='> name:port)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 4)}
                  spids: [4517]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 5)}
                  spids: [4521]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_6='> name:_6)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 6)}
                  spids: [4525]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} {<Id.Lit_Equals '='>} 
                  {(DQ <use_global>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tcp_opts='> name:tcp_opts)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [4564]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_Equals '='>} 
                  {(DQ <tcp>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tcp_opts='> name:tcp_opts)
                      op: assign_op.Equal
                      rhs: {(DQ <'flags S keep state keep frags'>)}
                      spids: [4585]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'block_policy='> name:block_policy)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<get_block_policy>} {($ Id.VSub_Number 1)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [4592]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName block_policy))} 
                              {<Id.Lit_Equals '='>} {(DQ <use_global>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'block_policy='>
                              name: block_policy
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name GLOBAL_BLOCK_POLICY)}
                          spids: [4622]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4602 4619]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName block_policy))} 
                              {<Id.Lit_Equals '='>} {(DQ <return>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} 
                          {<Id.Lit_Equals '='>} {(DQ <tcp>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'block_policy='>
                                  name: block_policy
                                )
                              op: assign_op.Equal
                              rhs: {(DQ <return-rst>)}
                              spids: [4668]
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <tcp>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'block_policy='>
                                  name: block_policy
                                )
                              op: assign_op.Equal
                              rhs: {(DQ <return-icmp-as-dest>)}
                              spids: [4691]
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                  ]
                  spids: [4632 4649]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'block_policy='> name:block_policy)
                      op: assign_op.Equal
                      rhs: {(DQ )}
                      spids: [4700]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iplist='> name:iplist)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<get_target> (${ Id.VSub_Name _6) <_list>} 
                            {($ Id.VSub_DollarName service)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [4709]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} 
                              {<Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_names: [ip]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'daddr='> name:daddr)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: (C {<get_IP>} {(${ Id.VSub_Name ip)})
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [4768]
                                )
                              ]
                              redirects: []
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} 
                                  {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Continue continue>
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'pass in log quick proto '> (${ Id.VSub_Name proto) 
                                    <' from any to '> (${ Id.VSub_Name daddr)
                                  )
                                }
                                {
                                  (DQ <'port = '> (${ Id.VSub_Name port) <' '> 
                                    (${ Id.VSub_Name tcp_opts)
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name out)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [4736 4753]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} {<Id.Lit_Equals '='>} 
                  {(DQ <deny>)} {<Id.Lit_RBracket ']'>}
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd)
                              op: assign_op.Equal
                              rhs: {(DQ <pass>)}
                              spids: [4881]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd)
                              op: assign_op.Equal
                              rhs: {(DQ <'block '> (${ Id.VSub_Name block_policy))}
                              spids: [4887]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} {<Id.Lit_Equals '='>} 
                  {(DQ <allow>)} {<Id.Lit_RBracket ']'>}
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd)
                              op: assign_op.Equal
                              rhs: {(DQ <'block '> (${ Id.VSub_Name block_policy))}
                              spids: [4917]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd)
                              op: assign_op.Equal
                              rhs: {(DQ <pass>)}
                              spids: [4926]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
            )
            (command.ForEach
              iter_names: [name]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<get_exceptions> (${ Id.VSub_Name _6)} {($ Id.VSub_DollarName service)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [4985]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [ip]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'daddr='>
                                              name: daddr
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<get_IP>} {(${ Id.VSub_Name ip)})
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [5031]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                                          {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ (${ Id.VSub_Name ecmd) <' in log quick on '> 
                                            (${ Id.VSub_Name ifc) <' from any to'>
                                          )
                                        }
                                        {
                                          (DQ (${ Id.VSub_Name daddr) <' port = '> 
                                            (${ Id.VSub_Name port)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(${ Id.VSub_Name out)}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [4995 5016]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'saddr='> name:saddr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [5111]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName saddr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [ip]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'daddr='>
                                              name: daddr
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<get_IP>} {(${ Id.VSub_Name ip)})
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [5159]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                                          {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ (${ Id.VSub_Name ecmd) <' in log quick proto '> 
                                            (${ Id.VSub_Name proto) <' from '> (${ Id.VSub_Name saddr)
                                          )
                                        }
                                        {
                                          (DQ <'to '> (${ Id.VSub_Name daddr) <' port = '> 
                                            (${ Id.VSub_Name port) <' '> (${ Id.VSub_Name tcp_opts)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(${ Id.VSub_Name out)}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [5123 5144]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ForEach
              iter_names: [name]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<get_apply2> (${ Id.VSub_Name _6) <_list>} 
                            {($ Id.VSub_DollarName service)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [5297]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [ip]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'daddr='>
                                              name: daddr
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<get_IP>} {(${ Id.VSub_Name ip)})
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [5343]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                                          {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ (${ Id.VSub_Name acmd) <' in log quick on '> 
                                            (${ Id.VSub_Name ifc) <' from any to'>
                                          )
                                        }
                                        {
                                          (DQ (${ Id.VSub_Name daddr) <' port = '> 
                                            (${ Id.VSub_Name port)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(${ Id.VSub_Name out)}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [5307 5328]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'saddr='> name:saddr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [5423]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName saddr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [ip]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'daddr='>
                                              name: daddr
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<get_IP>} {(${ Id.VSub_Name ip)})
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [5471]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                                          {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ (${ Id.VSub_Name acmd) <' in log quick proto '> 
                                            (${ Id.VSub_Name proto) <' from '> (${ Id.VSub_Name saddr)
                                          )
                                        }
                                        {
                                          (DQ <'to '> (${ Id.VSub_Name daddr) <' port = '> 
                                            (${ Id.VSub_Name port) <' '> (${ Id.VSub_Name tcp_opts)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(${ Id.VSub_Name out)}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [5435 5456]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ForEach
              iter_names: [ip]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'daddr='> name:daddr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name ip)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [5571]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ (${ Id.VSub_Name ecmd) <' in log quick proto '> (${ Id.VSub_Name proto) 
                            <' from any to '> (${ Id.VSub_Name daddr)
                          )
                        }
                        {(DQ <'port = '> (${ Id.VSub_Name port) <' '> (${ Id.VSub_Name tcp_opts))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name out)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: process_service
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} 
                  {(DQ ($ Id.VSub_DollarName IPF_FMRI))} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<service_check_state>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName SMF_MAINT)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'method='> name:method)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                words: [
                                  {<svcprop>}
                                  {<-p>}
                                  {($ Id.VSub_DollarName FW_CONTEXT_PG) <'/'> 
                                    ($ Id.VSub_DollarName METHOD_PROP)
                                  }
                                  {($ Id.VSub_Number 1)}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                              (C {<sed>} {(SQ <'s/\\\\//g'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [5738]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName method))} {<-a>} 
                              {(DQ ($ Id.VSub_DollarName method))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.Simple
                          words: [{<exec>} {($ Id.VSub_DollarName method)} {($ Id.VSub_Number 1)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      redirects: []
                    )
                  ]
                  spids: [5773 5799]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Simple
                      words: [
                        {<svcprop>}
                        {<-p>}
                        {($ Id.VSub_DollarName FW_CONFIG_PG)}
                        {($ Id.VSub_Number 1)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<process_server_svc>} {($ Id.VSub_Number 1)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: process_nonsvc_progs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [5889]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'# Non-service programs rules'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name out)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'progs='> name:progs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} 
                            {($ Id.VSub_DollarName OPEN_PORTS_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [5905]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [prog]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName progs)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName prog))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName prog))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'port='> name:port)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<tuple_get_port>} {($ Id.VSub_DollarName prog)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [5958]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<-o>} {<-z>} 
                          {(DQ ($ Id.VSub_DollarName port))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<tuple_get_proto>} {($ Id.VSub_DollarName prog)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [5992]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (C {<set>} {<-->} {($ Id.VSub_DollarName port)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<1>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {(DQ <'pass in log quick from any to any'>)}
                                        {
                                          (DQ <'port '> (${ Id.VSub_Number 1) <' >< '> 
                                            (${ Id.VSub_Number 2)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(${ Id.VSub_Name out)}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [6041 6054]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {
                                      (DQ <'pass in log quick proto '> (${ Id.VSub_Name proto) 
                                        <' from any'>
                                      )
                                    }
                                    {
                                      (DQ <'to any port '> (${ Id.VSub_Number 1) <' >< '> 
                                        (${ Id.VSub_Number 2)
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(${ Id.VSub_Name out)}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [6025 6038]
                        )
                      ]
                      else_action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                                          {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {(DQ <'pass in log quick from any to any'>)}
                                    {(DQ <'port = '> (${ Id.VSub_Number 1))}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(${ Id.VSub_Name out)}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              spids: [6120 6133]
                            )
                          ]
                          else_action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'pass in log quick proto '> (${ Id.VSub_Name proto) 
                                    <' from any'>
                                  )
                                }
                                {(DQ <'to any port = '> (${ Id.VSub_Number 1))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name out)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_global_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} 
                              {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<global_get_prop_value>} 
                                    {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName CUSTOM_FILE_PROP)}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6241]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file6='> name:file6)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<global_get_prop_value>} 
                                    {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName CUSTOM_FILE_6_PROP)}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6253]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName file))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<custom_set_symlink>} {($ Id.VSub_DollarName file)})
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName file6))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<custom_set_symlink_6>} {($ Id.VSub_DollarName file6)})
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [6221 6238]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMP='> name:TEMP)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<mktemp>} {<'/var/run/ipf.conf.pid'> ($ Id.VSub_Dollar '$') <.XXXXXX>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [6310]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMP6='> name:TEMP6)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<mktemp>} {<'/var/run/ipf6.conf.pid'> ($ Id.VSub_Dollar '$') <.XXXXXX>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [6322]
                )
              ]
              redirects: []
            )
            (C {<process_nonsvc_progs>} {($ Id.VSub_DollarName TEMP)})
            (C {<process_nonsvc_progs>} {($ Id.VSub_DollarName TEMP6)})
            (command.Simple
              words: [{<echo>} {(DQ <'# Global Default rules'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name TEMP)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'# Global Default rules'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name TEMP6)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'pass out log quick all keep state'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name TEMP)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'pass out log quick all keep state'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name TEMP6)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6369 6387]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))}
              arms: [
                (case_arm
                  pat_list: [{(SQ <none>)}]
                  action: [
                    (C {<replace_file>} {(${ Id.VSub_Name IPFILCONF)} {(${ Id.VSub_Name TEMP)})
                    (C {<replace_file>} {(${ Id.VSub_Name IP6FILCONF)} {(${ Id.VSub_Name TEMP6)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  spids: [6427 6430 6464 -1]
                )
                (case_arm
                  pat_list: [{(SQ <deny>)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd)
                          op: assign_op.Equal
                          rhs: {(DQ <pass>)}
                          spids: [6475]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd)
                          op: assign_op.Equal
                          rhs: {(DQ <block>)}
                          spids: [6481]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6469 6472 6487 -1]
                )
                (case_arm
                  pat_list: [{(SQ <allow>)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd)
                          op: assign_op.Equal
                          rhs: {(DQ <block>)}
                          spids: [6497]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd)
                          op: assign_op.Equal
                          rhs: {(DQ <pass>)}
                          spids: [6503]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6491 6494 6509 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [6512 6513 6522 -1]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [name]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} 
                            {($ Id.VSub_DollarName EXCEPTIONS_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6577]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name ecmd) <' in log quick on '> 
                                    (${ Id.VSub_Name ifc) <' all'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [6587 6608]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6638]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name ecmd) <' in log quick from '> 
                                    (${ Id.VSub_Name addr) <' to any'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [6650 6671]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ForEach
              iter_names: [name]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} 
                            {($ Id.VSub_DollarName EXCEPTIONS_6_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6749]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name ecmd) <' in log quick on '> 
                                    (${ Id.VSub_Name ifc) <' all'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [6759 6780]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6809]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name ecmd) <' in log quick from '> 
                                    (${ Id.VSub_Name addr) <' to any'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [6821 6842]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ForEach
              iter_names: [name]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} 
                            {($ Id.VSub_DollarName APPLY2_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6920]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name acmd) <' in log quick on '> 
                                    (${ Id.VSub_Name ifc) <' all'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [6930 6951]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [6980]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name acmd) <' in log quick from '> 
                                    (${ Id.VSub_Name addr) <' to any'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [6992 7013]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ForEach
              iter_names: [name]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} 
                            {($ Id.VSub_DollarName APPLY2_6_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [7090]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name acmd) <' in log quick on '> 
                                    (${ Id.VSub_Name ifc) <' all'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [7100 7121]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [7150]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name acmd) <' in log quick from '> 
                                    (${ Id.VSub_Name addr) <' to any'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [7162 7183]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} 
                              {<Id.Lit_Equals '='>} {(DQ <allow>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Pipeline
                      children: [
                        (C {<'/sbin/netstrategy'>})
                        (command.Simple
                          words: [{<grep>} {<dhcp>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'pass out log quick from any port = 68'>)}
                                {(DQ <'keep state'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(DQ <'pass in log quick from any to any port = 68'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'pass out log quick from any port = 546'>)}
                                {(DQ <'keep state'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(DQ <'pass in log quick from any to any port = 546'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [7259 7272]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'block in log all'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name TEMP)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'block in log all'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name TEMP6)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7212 7229]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<replace_file>} {(${ Id.VSub_Name IPFILCONF)} {(${ Id.VSub_Name TEMP)})
            (C {<replace_file>} {(${ Id.VSub_Name IP6FILCONF)} {(${ Id.VSub_Name TEMP6)})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_QMark '?')}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_global_ovr_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} 
                              {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# \'custom\' global policy'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName IPFILOVRCONF)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'# \'custom\' global policy'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName IP6FILOVRCONF)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [7442 7459]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ovr_policy='> name:ovr_policy)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} 
                            {($ Id.VSub_DollarName POLICY_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [7504]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ovr_policy))} 
                              {<Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# global override policy is \'none\''>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName IPFILOVRCONF)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'# global override policy is \'none\''>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName IP6FILOVRCONF)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [7516 7533]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMP='> name:TEMP)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<mktemp>} 
                            {<'/var/run/ipf_ovr.conf.pid'> ($ Id.VSub_Dollar '$') <.XXXXXX>}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [7566]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ovr_policy))} 
                  {<Id.Lit_Equals '='>} {(DQ <deny>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd)
                      op: assign_op.Equal
                      rhs: {(DQ <'block in log quick'>)}
                      spids: [7594]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ovr_policy))} 
                  {<Id.Lit_Equals '='>} {(DQ <allow>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd)
                      op: assign_op.Equal
                      rhs: {(DQ <'pass in log'>)}
                      spids: [7616]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2_list='> name:apply2_list)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} 
                            {($ Id.VSub_DollarName APPLY2_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [7623]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [name]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName apply2_list)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [7675]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ (${ Id.VSub_Name acmd) <' on '> (${ Id.VSub_Name ifc) <' all'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [7685 7706]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [7735]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name acmd) <' from '> (${ Id.VSub_Name addr) 
                                    <' to any'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [7747 7768]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2_6_list='> name:apply2_6_list)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} 
                            {($ Id.VSub_DollarName APPLY2_6_PROP)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [7797]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [name]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName apply2_6_list)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} 
                          {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_interface>} {($ Id.VSub_DollarName name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [7849]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ (${ Id.VSub_Name acmd) <' on '> (${ Id.VSub_Name ifc) <' all'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [7859 7880]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<get_IP>} {(${ Id.VSub_Name name)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [7909]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name acmd) <' from '> (${ Id.VSub_Name addr) 
                                    <' to any'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name TEMP6)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [7921 7942]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<replace_file>} {(${ Id.VSub_Name IPFILOVRCONF)} {(${ Id.VSub_Name TEMP)})
            (C {<replace_file>} {(${ Id.VSub_Name IP6FILOVRCONF)} {(${ Id.VSub_Name TEMP6)})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_QMark '?')}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: svc_mark_maintenance
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<svcadm>} {<mark>} {<maintenance>} {($ Id.VSub_Number 1)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'date='> name:date)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<date>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8035]
                )
              ]
              redirects: []
            )
            (C {<echo>} 
              {
                (DQ <'[ '> ($ Id.VSub_DollarName date) <' '> (${ Id.VSub_Number 0) <': '> 
                  ($ Id.VSub_Number 1) <' has invalid ipf configuration. ]'>
                )
              }
            )
            (C {<echo>} 
              {
                (DQ <'[ '> ($ Id.VSub_DollarName date) <' '> (${ Id.VSub_Number 0) <': placing '> 
                  ($ Id.VSub_Number 1) <' in maintenance. ]'>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ipfile='> name:ipfile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName IPF_SUFFIX)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8090]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ipfile))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<mv>} {($ Id.VSub_DollarName ipfile)} {(DQ ($ Id.VSub_DollarName ipfile) <.bak>)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip6file='> name:ip6file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_Number 1)} 
                            {($ Id.VSub_DollarName IPF6_SUFFIX)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8124]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ip6file))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<mv>} {($ Id.VSub_DollarName ip6file)} {(DQ ($ Id.VSub_DollarName ip6file) <.bak>)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'natfile='> name:natfile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName NAT_SUFFIX)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8159]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName natfile))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<mv>} {($ Id.VSub_DollarName natfile)} {(DQ ($ Id.VSub_DollarName natfile) <.bak>)})
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: svc_is_server
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<svcprop>} {<-p>} {($ Id.VSub_DollarName FW_CONFIG_PG)} {($ Id.VSub_Number 1)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_services_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} 
                  {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<ipf_get_lock>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'allsvcs='> name:allsvcs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                words: [
                                  {<svcprop>}
                                  {<-cf>}
                                  {<-p>}
                                  {<'general/enabled'>}
                                  {<-p>}
                                  {<'general_ovr/enabled'>}
                                  {(SQ <'*'>)}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                              (C {<sed>} {<-n>} {(SQ <'s,^\\(svc:.*\\)/:properties/.* true$,\\1,p'>)})
                              (C {<sort>} {<-u>})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8297]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [s]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName allsvcs)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<service_is_enabled>} {($ Id.VSub_DollarName s)})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<process_service>} {($ Id.VSub_DollarName s)})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ipfile='> name:ipfile)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<fmri_to_file>} {($ Id.VSub_DollarName s)} 
                                    {($ Id.VSub_DollarName IPF_SUFFIX)}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [8393]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName ipfile))} {<-a>} {<-r>} {(DQ ($ Id.VSub_DollarName ipfile))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ipfile)})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)})
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [8434 8447]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (C {<svc_is_server>} {($ Id.VSub_DollarName s)})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<check_ipf_rules>} {($ Id.VSub_DollarName ipfile)})
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                      {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)})
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Continue continue>
                                            )
                                          ]
                                          spids: [8488 8501]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [8467 8480]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'CONF_FILES='>
                                      name: CONF_FILES
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName CONF_FILES) <' '> 
                                        ($ Id.VSub_DollarName ipfile)
                                      )
                                    }
                                  spids: [8518]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [8405 8426]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip6file='> name:ip6file)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<fmri_to_file>} {($ Id.VSub_DollarName s)} 
                                    {($ Id.VSub_DollarName IPF6_SUFFIX)}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [8530]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName ip6file))} {<-a>} {<-r>} {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ip6file)} {<-6>})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)})
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [8573 8586]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (C {<svc_is_server>} {($ Id.VSub_DollarName s)})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<check_ipf_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>})
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                      {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)})
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Continue continue>
                                            )
                                          ]
                                          spids: [8629 8642]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [8606 8619]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'CONF6_FILES='>
                                      name: CONF6_FILES
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName CONF6_FILES) <' '> 
                                        ($ Id.VSub_DollarName ip6file)
                                      )
                                    }
                                  spids: [8659]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [8542 8563]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'natfile='> name:natfile)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<fmri_to_file>} {($ Id.VSub_DollarName s)} 
                                    {($ Id.VSub_DollarName NAT_SUFFIX)}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [8671]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName natfile))} {<-a>} {<-r>} {(DQ ($ Id.VSub_DollarName natfile))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<check_nat_syntax>} {($ Id.VSub_DollarName natfile)})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)})
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [8712 8725]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'NAT_FILES='>
                                      name: NAT_FILES
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName NAT_FILES) <' '> 
                                        ($ Id.VSub_DollarName natfile)
                                      )
                                    }
                                  spids: [8740]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [8683 8704]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<ipf_remove_lock>})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: service_update_rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'svc='> name:svc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [8787]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ipfile='> name:ipfile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_DollarName svc)} 
                            {($ Id.VSub_DollarName IPF_SUFFIX)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8792]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip6file='> name:ip6file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_DollarName svc)} 
                            {($ Id.VSub_DollarName IPF6_SUFFIX)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8804]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ipfile))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<remove_rules>} {($ Id.VSub_DollarName ipfile)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ip6file))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<remove_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName ipfile))} {<-a>} {<-z>} 
                  {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'natfile='> name:natfile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<fmri_to_file>} {($ Id.VSub_DollarName svc)} 
                            {($ Id.VSub_DollarName NAT_SUFFIX)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8879]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName natfile))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<remove_nat_rules>} {($ Id.VSub_DollarName natfile)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<service_is_enabled>} {($ Id.VSub_DollarName svc)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<service_check_state>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName SMF_MAINT)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<process_service>} {($ Id.VSub_DollarName svc)})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ipfile))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ipfile)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [8978 8991]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [8957 8970]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ip6file))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ip6file)} {<-6>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [9034 9047]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [9011 9024]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName natfile))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<check_nat_syntax>} {($ Id.VSub_DollarName natfile)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [9088 9101]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [9067 9080]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ipfile))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<svc_is_server>} {($ Id.VSub_DollarName svc)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<update_check_ipf_rules>} {($ Id.VSub_DollarName ipfile)})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)})
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [9163 9176]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [9142 9155]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<prepend_new_rules>} {($ Id.VSub_DollarName ipfile)})
                    (C {<remove_rules>} {($ Id.VSub_DollarName IPFILOVRCONF)})
                    (C {<prepend_new_rules>} {($ Id.VSub_DollarName IPFILOVRCONF)})
                  ]
                  spids: [9121 9134]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ip6file))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<svc_is_server>} {($ Id.VSub_DollarName svc)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<update_check_ipf_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)})
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [9276 9289]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [9253 9266]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<prepend_new_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>})
                    (C {<remove_rules>} {($ Id.VSub_DollarName IP6FILOVRCONF)} {<-6>})
                    (C {<prepend_new_rules>} {($ Id.VSub_DollarName IP6FILOVRCONF)} {<-6>})
                  ]
                  spids: [9232 9245]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName natfile))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<append_new_nat_rules>} {($ Id.VSub_DollarName natfile)})
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: service_update
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'svc='> name:svc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [9401]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [9405]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} 
                  {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<service_check_state>} {($ Id.VSub_DollarName SMF_FMRI)} 
                  {($ Id.VSub_DollarName SMF_ONLINE)}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<ipf_get_lock>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<service_update_rules>} {($ Id.VSub_DollarName svc)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [9470]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (C {<ipf_remove_lock>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName ret)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<global_init>})
  ]
)