{
  "_format": "hh-sol-artifact-1",
  "contractName": "AllocateLayerHandlerLib",
  "sourceName": "contracts/V3/handler/AllocateLayerHandlerLib.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint8",
                  "name": "erc",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "valueList",
                  "type": "uint256[]"
                }
              ],
              "internalType": "struct Token.TokenTemplate",
              "name": "tokenTemplate",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "rule",
              "type": "uint8"
            },
            {
              "internalType": "address[]",
              "name": "ioAddressList",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct Rule.TokenSlot[]",
          "name": "stdTokenSlotList",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "erc",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "int40",
                  "name": "attrAmount",
                  "type": "int40"
                }
              ],
              "internalType": "struct Attribute.AttributeIn[]",
              "name": "attrInList",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Token.Token[]",
          "name": "inTokenList",
          "type": "tuple[]"
        },
        {
          "internalType": "uint16",
          "name": "roundCount",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "round",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenSlotIndex",
          "type": "uint256"
        }
      ],
      "name": "calAllocateTokenId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "cmd",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.StateParams",
          "name": "params",
          "type": "tuple"
        },
        {
          "internalType": "uint128",
          "name": "ruleConfig",
          "type": "uint128"
        }
      ],
      "name": "getAllocateLayerState",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x61337361003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80630d08d1681461007157806332bd0cd0146100a457806346fb8fe6146100c45780634b3dfd01146100fc57806355fb22161461011e57806386aa79511461013e575b600080fd5b81801561007d57600080fd5b5061009161008c36600461289a565b610166565b6040519081526020015b60405180910390f35b6100b76100b236600461299b565b6101a8565b60405161009b9190612b25565b8180156100d057600080fd5b506100e46100df366004612b87565b6104d1565b6040516001600160801b03909116815260200161009b565b81801561010857600080fd5b5061011c610117366004612c08565b610594565b005b81801561012a57600080fd5b5061011c610139366004612e32565b610845565b61015161014c366004612f10565b610979565b6040805192835260208301919091520161009b565b6000808361ffff16855161017a9190612fc1565b905060006101888285612fd5565b905060008061019a8989898987610979565b9a9950505050505050505050565b606082610120015160ff166000141561030f5760006101d3836001600160801b031660086000610a5b565b6040805160038082526080820190925291925060009190816020015b60608152602001906001900390816101ef57905050905061023c6040518060400160405280600e81526020016d0626c6f636b54696d657374616d760941b8152504263ffffffff16610a7c565b8160008151811061024f5761024f612ff4565b60200260200101819052506102946040518060400160405280600b81526020016a313637b1b5a73ab6b132b960a91b815250610289610b5d565b63ffffffff16610a7c565b816001815181106102a7576102a7612ff4565b60200260200101819052506102e76040518060400160405280601081526020016f0caf0cac6eae8ca626060a6eed2e8c6d60831b8152508360ff16610a7c565b816002815181106102fa576102fa612ff4565b602002602001018190525080925050506104cb565b600083602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b15801561034e57600080fd5b505afa158015610362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610386919061300a565b8460400151856060015186608001518761014001516103a490613027565b6040516020016103b895949392919061304b565b60408051808303601f190181529082905280516020909101206365612ae160e11b8252600482018190529150600090309063cac255c29060240160206040518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190613083565b60408051600180825281830190925291925060009190816020015b606081526020019060019003908161045d5790505090506104a86040518060400160405280600f81526020016e746f6b656e4964536574537461746560881b8152508360ff16610a7c565b816000815181106104bb576104bb612ff4565b6020908102919091010152925050505b92915050565b6000806104df836000610be9565b905060006104ee846001610be9565b6040516331048c1760e11b815263ffffffff8916600482015261ffff80891660248301528716604482015260ff821660648201529091506001600160a01b03891690636209182e90608401600060405180830381600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b505050506000610587816001600160801b03168460ff1660086000610c76565b9998505050505050505050565b6000806105a48360600151610c9b565b60ff1683606001516101400151516105bc9190612fc1565b90506000816001600160401b038111156105d8576105d861233a565b604051908082528060200260200182016040528015610601578160200160208202803683370190505b50905060005b8460600151610140015151811080156106205750600083115b1561083e57600085606001516101400151828151811061064257610642612ff4565b60200260200101519050806040015183868061065d906130a0565b97508151811061066f5761066f612ff4565b60200260200101818152505083851061082d5760008360405160200161069591906130bb565b6040516020818303038152906040528051906020012090506000876060015160200151886060015161010001516106cf8a60600151610cdb565b6106dc8b60600151610cf5565b856040516020016106f195949392919061304b565b60408051808303601f190181529082905280516020909101206365612ae160e11b8252600482018190529150600090309063cac255c29060240160206040518083038186803b15801561074357600080fd5b505afa158015610757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077b9190613083565b9050600060ff168160ff16146107b1604051806060016040528060358152602001613309603591396107ac88610d1a565b610d25565b906107d85760405162461bcd60e51b81526004016107cf91906130ff565b60405180910390fd5b50866001600160401b038111156107f1576107f161233a565b60405190808252806020026020018201604052801561081a578160200160208202803683370190505b5095506108278789613112565b97505050505b50610837816130a0565b9050610607565b5050505050565b602082015160018201805460408501516001600160a01b0316610100026001600160a81b031990911660ff9093169290921791909117905560005b825151811015610974576000836000015182815181106108a2576108a2612ff4565b60209081029190910181015184546001818101875560008781528490208385015160026005909402909101928301805460ff92831660ff19909116179055835180518454828801516001600160a01b0316610100026001600160a81b03199091169190931617919091178355604001518051939550919361092893918501920190612285565b5060608201518051610944916004840191602090910190612285565b50604082015180516109609160038401916020909101906122d0565b5050508061096d906130a0565b9050610880565b505050565b60008060008561ffff16875161098f9190612fc1565b9050600061099d8287612fd5565b6109a79086613112565b90508181106109bf5760016000935093505050610a51565b60008886815181106109d3576109d3612ff4565b60200260200101519050600080610a078c85815181106109f5576109f5612ff4565b60200260200101516000015184610d51565b9092509050600080610a218e8e8e8e61014c8f6001613129565b9092509050610a308284612fd5565b81610a3b8487612fd5565b610a459190613129565b98509850505050505050505b9550959350505050565b91821c91600080610a6f600180861b613112565b85169150505b9392505050565b60606000610a8984611042565b90506000610a968461104d565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081610ab25790505090508281600081518110610add57610add612ff4565b6020026020010181905250610b0d604051806040016040528060048152602001631d5a5b9d60e21b815250611042565b81600181518110610b2057610b20612ff4565b60200260200101819052508181600281518110610b3f57610b3f612ff4565b6020026020010181905250610b5381611060565b9695505050505050565b60004661a4b1811415610be25760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc9190613141565b91505090565b4391505090565b600080610c25610c208560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b611084565b9050610c6e610c4f828560ff1681518110610c4257610c42612ff4565b6020026020010151611084565b600281518110610c6157610c61612ff4565b6020026020010151611199565b949350505050565b600083821b8183610c8a600180881b613112565b901b19969096161795945050505050565b60006104cb8260a00151601060006008610cb59190613129565b610cc0906010613129565b610ccb906010613129565b610cd6906008613129565b610a5b565b60006104cb8260a00151601060006008610cd69190613129565b60006104cb8260a00151601060006008610d0f9190613129565b610cd6906010613129565b60606104cb826111e6565b60608282604051602001610d3a92919061315a565b604051602081830303815290604052905092915050565b6000806000806001905084602001516001600160a01b031686602001516001600160a01b0316148015610d965750845160ff1660021480610d965750845160ff166003145b15611035576000610da687611282565b90506000610db3886112c1565b90508015610e51576040870151610dde576000610dd1826001613129565b955095505050505061103b565b6000610df788604001518a61134390919063ffffffff16565b90506000811215610e11575092945090925061103b915050565b60ff831660011415610e2857809450819350610e4b565b60ff8316610e4b57610e3b816001613129565b9450610e48826001613129565b93505b50611032565b6000610e5c89611742565b905080600081518110610e7157610e71612ff4565b60200260200101516000108015610ebc575080600181518110610e9657610e96612ff4565b602002602001015181600081518110610eb157610eb1612ff4565b602002602001015111155b15611030576040880151610f20576000945080600081518110610ee157610ee1612ff4565b602002602001015181600181518110610efc57610efc612ff4565b6020026020010151610f0e9190613112565b610f19906002613129565b9350611030565b60ff831660011415610fa35780600081518110610f3f57610f3f612ff4565b60200260200101518860400151610f569190613112565b945080600081518110610f6b57610f6b612ff4565b602002602001015181600181518110610f8657610f86612ff4565b6020026020010151610f989190613112565b610f19906001613129565b60ff83166110305780600081518110610fbe57610fbe612ff4565b60200260200101518860400151610fd59190613112565b610fe0906001613129565b945080600081518110610ff557610ff5612ff4565b60200260200101518160018151811061101057611010612ff4565b60200260200101516110229190613112565b61102d906002613129565b93505b505b50505b90925090505b9250929050565b60606104cb826118b3565b60606104cb61105b83611903565b6118b3565b6060600061106d83611a40565b9050610a7561107e825160c0611b71565b82611d27565b606061108f82611da4565b61109857600080fd5b60006110a383611ddd565b90506000816001600160401b038111156110bf576110bf61233a565b60405190808252806020026020018201604052801561110457816020015b60408051808201909152600080825260208201528152602001906001900390816110dd5790505b50905060006111168560200151611e60565b85602001516111259190613129565b90506000805b8481101561118e5761113c83611ee1565b915060405180604001604052808381526020018481525084828151811061116557611165612ff4565b602090810291909101015261117a8284613129565b925080611186816130a0565b91505061112b565b509195945050505050565b8051600090158015906111ae57508151602110155b6111b757600080fd5b6000806111c384611f85565b815191935091506020821015610c6e5760208290036101000a9004949350505050565b606060006111f383611fcc565b60010190506000816001600160401b038111156112125761121261233a565b6040519080825280601f01601f19166020018201604052801561123c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846112755761127a565b611246565b509392505050565b60006104cb826040015160008151811061129e5761129e612ff4565b6020026020010151600460ff16600060046112b99190613196565b60ff16610a5b565b805160009060ff1615806112d95750815160ff166001145b156112e657506000919050565b815160ff16600214806112fd5750815160ff166003145b1561133b57600061130d836120a2565b905060ff811660011415611332576000611326846120d5565b61ffff16949350505050565b50600092915050565b506000919050565b815160009060ff16158061135b5750825160ff166001145b1561136957506000196104cb565b825160ff16600314156115c3576000611381846120a2565b905060ff8116600114156115b857600061139a856120d5565b9050600085604001516000815181106113b5576113b5612ff4565b60200260200101519050600086604001516001815181106113d8576113d8612ff4565b60200260200101519050600087604001516002815181106113fb576113fb612ff4565b602002602001015190506000886040015160038151811061141e5761141e612ff4565b602002602001015190506000896040015160008151811061144157611441612ff4565b6020026020010181815250506000896040015160018151811061146657611466612ff4565b6020026020010181815250506000896040015160028151811061148b5761148b612ff4565b602002602001018181525050600089604001516003815181106114b0576114b0612ff4565b60200260200101818152505060006114dd8a604001518760046114d391906131bb565b61ffff168b612134565b9050848a604001516000815181106114f7576114f7612ff4565b602002602001018181525050838a6040015160018151811061151b5761151b612ff4565b602002602001018181525050828a6040015160028151811061153f5761153f612ff4565b602002602001018181525050818a6040015160038151811061156357611563612ff4565b60200260200101818152505060006000199050898b60400151838151811061158d5761158d612ff4565b602002602001015114156115a9576115a6600483613112565b90505b97506104cb9650505050505050565b6000199150506104cb565b825160ff16600214156117385760006115db846120a2565b905060ff8116600114156115b85760006115f4856120d5565b90506000856040015160008151811061160f5761160f612ff4565b602002602001015190506000866040015160018151811061163257611632612ff4565b602002602001015190506000876040015160008151811061165557611655612ff4565b6020026020010181815250506000876040015160018151811061167a5761167a612ff4565b60200260200101818152505060006116a7886040015185600261169d91906131bb565b61ffff1689612134565b90508288604001516000815181106116c1576116c1612ff4565b6020026020010181815250508188604001516001815181106116e5576116e5612ff4565b60200260200101818152505060006000199050878960400151838151811061170f5761170f612ff4565b6020026020010151141561172b57611728600483613112565b90505b95506104cb945050505050565b5060001992915050565b6040805160028082526060808301845292600092919060208301908036833701905050835190915060ff166002141561180d576000611780846120a2565b905060ff81166118075783604001516002815181106117a1576117a1612ff4565b6020026020010151826000815181106117bc576117bc612ff4565b60200260200101818152505083604001516003815181106117df576117df612ff4565b6020026020010151826001815181106117fa576117fa612ff4565b6020026020010181815250505b506104cb565b825160ff16600314156104cb576000611825846120a2565b905060ff81166118ac57836040015160048151811061184657611846612ff4565b60200260200101518260008151811061186157611861612ff4565b602002602001018181525050836040015160058151811061188457611884612ff4565b60200260200101518260018151811061189f5761189f612ff4565b6020026020010181815250505b5092915050565b606080825160011480156118e257506080836000815181106118d7576118d7612ff4565b016020015160f81c11155b156118ee5750816104cb565b610a756118fd84516080611b71565b84611d27565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b60208110156119775781818151811061194c5761194c612ff4565b01602001516001600160f81b0319161561196557611977565b8061196f816130a0565b915050611931565b6000611984826020613112565b6001600160401b0381111561199b5761199b61233a565b6040519080825280601f01601f1916602001820160405280156119c5576020820181803683370190505b50905060005b8151811015611a375783836119df816130a0565b9450815181106119f1576119f1612ff4565b602001015160f81c60f81b828281518110611a0e57611a0e612ff4565b60200101906001600160f81b031916908160001a90535080611a2f816130a0565b9150506119cb565b50949350505050565b6060815160001415611a625760408051600080825260208201909252906118ac565b6000805b8351811015611aa957838181518110611a8157611a81612ff4565b60200260200101515182611a959190613129565b915080611aa1816130a0565b915050611a66565b6000826001600160401b03811115611ac357611ac361233a565b6040519080825280601f01601f191660200182016040528015611aed576020820181803683370190505b50600092509050602081015b8551831015611a37576000868481518110611b1657611b16612ff4565b602002602001015190506000602082019050611b34838284516121f2565b878581518110611b4657611b46612ff4565b60200260200101515183611b5a9190613129565b925050508280611b69906130a0565b935050611af9565b6060806038841015611bdb5760408051600180825281830190925290602082018180368337019050509050611ba68385613129565b601f1a60f81b81600081518110611bbf57611bbf612ff4565b60200101906001600160f81b031916908160001a905350610a75565b600060015b611bea8187612fc1565b15611c105781611bf9816130a0565b9250611c09905061010082612fd5565b9050611be0565b611c1b826001613129565b6001600160401b03811115611c3257611c3261233a565b6040519080825280601f01601f191660200182016040528015611c5c576020820181803683370190505b509250611c698583613129565b611c74906037613129565b601f1a60f81b83600081518110611c8d57611c8d612ff4565b60200101906001600160f81b031916908160001a905350600190505b818111611d1e57610100611cbd8284613112565b611cc9906101006132c5565b611cd39088612fc1565b611cdd91906132d1565b601f1a60f81b838281518110611cf557611cf5612ff4565b60200101906001600160f81b031916908160001a90535080611d16816130a0565b915050611ca9565b50509392505050565b6060806040519050835180825260208201818101602087015b81831015611d58578051835260209283019201611d40565b50855184518101855292509050808201602086015b81831015611d85578051835260209283019201611d6d565b508651929092011591909101601f01601f191660405250905092915050565b8051600090611db557506000919050565b6020820151805160001a9060c0821015611dd3575060009392505050565b5060019392505050565b8051600090611dee57506000919050565b600080611dfe8460200151611e60565b8460200151611e0d9190613129565b9050600084600001518560200151611e259190613129565b90505b80821015611e5757611e3982611ee1565b611e439083613129565b915082611e4f816130a0565b935050611e28565b50909392505050565b8051600090811a6080811015611e795750600092915050565b60b8811080611e94575060c08110801590611e94575060f881105b15611ea25750600192915050565b60c0811015611ecf57611eb7600160b86132e5565b611ec49060ff1682613112565b610a75906001613129565b611eb7600160f86132e5565b50919050565b80516000908190811a6080811015611efc57600191506118ac565b60b8811015611f2257611f10608082613112565b611f1b906001613129565b91506118ac565b60c0811015611f4f5760b78103600185019450806020036101000a855104600182018101935050506118ac565b60f8811015611f6357611f1060c082613112565b60019390930151602084900360f7016101000a900490920160f5190192915050565b6000806000611f978460200151611e60565b90506000818560200151611fab9190613129565b90506000828660000151611fbf9190613112565b9196919550909350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061200b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612035576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061205357662386f26fc10000830492506010015b6305f5e100831061206b576305f5e100830492506008015b612710831061207f57612710830492506004015b60648310612091576064830492506002015b600a83106104cb5760010192915050565b60006104cb82604001516000815181106120be576120be612ff4565b6020026020010151600460ff16600060ff16610a5b565b805160009060ff16600214806120ef5750815160ff166003145b1561133b576104cb826040015160008151811061210e5761210e612ff4565b6020026020010151601060ff16600060046121299190613196565b6112b9906004613196565b600083516000141561214857506000610a75565b6000835b8082101561219f576000612160838361226a565b90508487828151811061217557612175612ff4565b6020026020010151111561218b57809150612199565b612196816001613129565b92505b5061214c565b6000821180156121d1575083866121b7600185613112565b815181106121c7576121c7612ff4565b6020026020010151145b156121ea576121e1600183613112565b92505050610a75565b509050610a75565b8282825b6020811061222e578151835261220d602084613129565b925061221a602083613129565b9150612227602082613112565b90506121f6565b6000600161223d836020613112565b612249906101006132c5565b6122539190613112565b925184518416931916929092179092525050505050565b60006122796002848418612fc1565b610a7590848416613129565b8280548282559060005260206000209081019282156122c0579160200282015b828111156122c05782518255916020019190600101906122a5565b506122cc929150612325565b5090565b8280548282559060005260206000209081019282156122c0579160200282015b828111156122c057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906122f0565b5b808211156122cc5760008155600101612326565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156123725761237261233a565b60405290565b604051606081016001600160401b03811182821017156123725761237261233a565b60405160a081016001600160401b03811182821017156123725761237261233a565b604080519081016001600160401b03811182821017156123725761237261233a565b60405161016081016001600160401b03811182821017156123725761237261233a565b60405161018081016001600160401b03811182821017156123725761237261233a565b604051601f8201601f191681016001600160401b038111828210171561244c5761244c61233a565b604052919050565b60006001600160401b0382111561246d5761246d61233a565b5060051b60200190565b60ff8116811461248657600080fd5b50565b803561249481612477565b919050565b6001600160a01b038116811461248657600080fd5b803561249481612499565b600082601f8301126124ca57600080fd5b813560206124df6124da83612454565b612424565b82815260059290921b840181019181810190868411156124fe57600080fd5b8286015b848110156125195780358352918301918301612502565b509695505050505050565b600082601f83011261253557600080fd5b813560206125456124da83612454565b82815260059290921b8401810191818101908684111561256457600080fd5b8286015b8481101561251957803561257b81612499565b8352918301918301612568565b600082601f83011261259957600080fd5b813560206125a96124da83612454565b82815260059290921b840181019181810190868411156125c857600080fd5b8286015b848110156125195780356001600160401b03808211156125eb57600080fd5b90880190601f196080838c038201121561260457600080fd5b61260c612350565b878401358381111561261d57600080fd5b84016060818e038401121561263157600080fd5b612639612378565b92508881013561264881612477565b835260408181013561265981612499565b848b015260608201358581111561266f57600080fd5b61267d8f8c838601016124b9565b8286015250838352612690818701612489565b8a84015260608601359350848411156126a857600080fd5b6126b68e8b86890101612524565b908301525060808401359150828211156126cf57600080fd5b6126dd8c89848701016124b9565b606082015286525050509183019183016125cc565b803563ffffffff8116811461249457600080fd5b600082601f83011261271757600080fd5b813560206127276124da83612454565b82815260059290921b8401810191818101908684111561274657600080fd5b8286015b848110156125195780356001600160401b038082111561276957600080fd5b9088019060a0828b03601f1901121561278157600080fd5b61278961239a565b8683013561279681612477565b81526040838101356127a781612499565b828901526060848101358284015260808501359083015260a0840135838111156127d15760008081fd5b8085019450508b603f8501126127e957600092508283fd5b8784013592506127fb6124da84612454565b83815260069390931b8401810192888101908d85111561281b5760008081fd5b948201945b848610156128725782868f0312156128385760008081fd5b6128406123bc565b612849876126f2565b81528a8701358060040b811461285f5760008081fd5b818c015282529482019490890190612820565b608084015250508552505091830191830161274a565b803561ffff8116811461249457600080fd5b600080600080608085870312156128b057600080fd5b84356001600160401b03808211156128c757600080fd5b6128d388838901612588565b955060208701359150808211156128e957600080fd5b506128f687828801612706565b93505061290560408601612888565b9396929550929360600135925050565b600082601f83011261292657600080fd5b81356001600160401b0381111561293f5761293f61233a565b612952601f8201601f1916602001612424565b81815284602083860101111561296757600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160801b038116811461249457600080fd5b600080604083850312156129ae57600080fd5b82356001600160401b03808211156129c557600080fd5b9084019061016082870312156129da57600080fd5b6129e26123de565b6129eb836124ae565b81526129f9602084016124ae565b6020820152612a0a604084016126f2565b6040820152612a1b60608401612888565b6060820152612a2c60808401612888565b6080820152612a3d60a08401612489565b60a0820152612a4e60c084016124ae565b60c0820152612a5f60e084016126f2565b60e0820152610100612a728185016124ae565b90820152610120612a84848201612489565b908201526101408381013583811115612a9c57600080fd5b612aa889828701612915565b828401525050809450505050612ac060208401612984565b90509250929050565b60005b83811015612ae4578181015183820152602001612acc565b83811115612af3576000848401525b50505050565b60008151808452612b11816020860160208601612ac9565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612b7a57603f19888603018452612b68858351612af9565b94509285019290850190600101612b4c565b5092979650505050505050565b600080600080600060a08688031215612b9f57600080fd5b8535612baa81612499565b9450612bb8602087016126f2565b9350612bc660408701612888565b9250612bd460608701612888565b915060808601356001600160401b03811115612bef57600080fd5b612bfb88828901612915565b9150509295509295909350565b600060208284031215612c1a57600080fd5b81356001600160401b0380821115612c3157600080fd5b9083019060a08286031215612c4557600080fd5b612c4d61239a565b8235612c5881612499565b81526020830135612c6881612499565b60208201526040830135612c7b81612499565b6040820152606083013582811115612c9257600080fd5b83016101808188031215612ca557600080fd5b612cad612401565b612cb6826124ae565b8152612cc4602083016124ae565b6020820152612cd5604083016124ae565b6040820152612ce6606083016124ae565b60608201526080820135608082015260a082013560a0820152612d0b60c083016126f2565b60c0820152612d1c60e083016126f2565b60e0820152610100612d2f8184016126f2565b90820152610120612d41838201612489565b908201526101408281013585811115612d5957600080fd5b612d658a828601612706565b8284015250506101608083013585811115612d7f57600080fd5b612d8b8a828601612915565b8284015250508060608401525050612da560808401612489565b608082015295945050505050565b600082601f830112612dc457600080fd5b81356020612dd46124da83612454565b82815260059290921b84018101918181019086841115612df357600080fd5b8286015b848110156125195780356001600160401b03811115612e165760008081fd5b612e248986838b0101612915565b845250918301918301612df7565b60008060408385031215612e4557600080fd5b82356001600160401b0380821115612e5c57600080fd5b9084019060a08287031215612e7057600080fd5b612e7861239a565b823582811115612e8757600080fd5b612e9388828601612588565b825250612ea260208401612489565b6020820152612eb3604084016124ae565b6040820152606083013582811115612eca57600080fd5b612ed688828601612524565b606083015250608083013582811115612eee57600080fd5b612efa88828601612db3565b6080830152509660209590950135955050505050565b600080600080600060a08688031215612f2857600080fd5b85356001600160401b0380821115612f3f57600080fd5b612f4b89838a01612588565b96506020880135915080821115612f6157600080fd5b50612f6e88828901612706565b945050612f7d60408701612888565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612fd057612fd0612f95565b500490565b6000816000190483118215151615612fef57612fef612fab565b500290565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301c57600080fd5b8151610a7581612499565b80516020808301519190811015611edb5760001960209190910360031b1b16919050565b6001600160a01b0395909516855263ffffffff93909316602085015261ffff9182166040850152166060830152608082015260a00190565b60006020828403121561309557600080fd5b8151610a7581612477565b60006000198214156130b4576130b4612fab565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156130f3578351835292840192918401916001016130d7565b50909695505050505050565b602081526000610a756020830184612af9565b60008282101561312457613124612fab565b500390565b6000821982111561313c5761313c612fab565b500190565b60006020828403121561315357600080fd5b5051919050565b6000835161316c818460208801612ac9565b600b60fa1b908301908152835161318a816001840160208801612ac9565b01600101949350505050565b600060ff821660ff84168060ff038211156131b3576131b3612fab565b019392505050565b600061ffff8083168185168083038211156131d8576131d8612fab565b01949350505050565b600181815b8085111561321c57816000190482111561320257613202612fab565b8085161561320f57918102915b93841c93908002906131e6565b509250929050565b600082613233575060016104cb565b81613240575060006104cb565b816001811461325657600281146132605761327c565b60019150506104cb565b60ff84111561327157613271612fab565b50506001821b6104cb565b5060208310610133831016604e8410600b841016171561329f575081810a6104cb565b6132a983836131e1565b80600019048211156132bd576132bd612fab565b029392505050565b6000610a758383613224565b6000826132e0576132e0612f95565b500690565b600060ff821660ff8416808210156132ff576132ff612fab565b9003939250505056fe616c6c6f63617465206c6179657220746f6b656e207365742064697361626c6520656e6420746f6b656e536c6f74496e6465782069a26469706673582212200aec13d427f16fa25efb41793d19712107c4fd810d0abe61c97c71de556f682d64736f6c63430008080033",
  "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80630d08d1681461007157806332bd0cd0146100a457806346fb8fe6146100c45780634b3dfd01146100fc57806355fb22161461011e57806386aa79511461013e575b600080fd5b81801561007d57600080fd5b5061009161008c36600461289a565b610166565b6040519081526020015b60405180910390f35b6100b76100b236600461299b565b6101a8565b60405161009b9190612b25565b8180156100d057600080fd5b506100e46100df366004612b87565b6104d1565b6040516001600160801b03909116815260200161009b565b81801561010857600080fd5b5061011c610117366004612c08565b610594565b005b81801561012a57600080fd5b5061011c610139366004612e32565b610845565b61015161014c366004612f10565b610979565b6040805192835260208301919091520161009b565b6000808361ffff16855161017a9190612fc1565b905060006101888285612fd5565b905060008061019a8989898987610979565b9a9950505050505050505050565b606082610120015160ff166000141561030f5760006101d3836001600160801b031660086000610a5b565b6040805160038082526080820190925291925060009190816020015b60608152602001906001900390816101ef57905050905061023c6040518060400160405280600e81526020016d0626c6f636b54696d657374616d760941b8152504263ffffffff16610a7c565b8160008151811061024f5761024f612ff4565b60200260200101819052506102946040518060400160405280600b81526020016a313637b1b5a73ab6b132b960a91b815250610289610b5d565b63ffffffff16610a7c565b816001815181106102a7576102a7612ff4565b60200260200101819052506102e76040518060400160405280601081526020016f0caf0cac6eae8ca626060a6eed2e8c6d60831b8152508360ff16610a7c565b816002815181106102fa576102fa612ff4565b602002602001018190525080925050506104cb565b600083602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b15801561034e57600080fd5b505afa158015610362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610386919061300a565b8460400151856060015186608001518761014001516103a490613027565b6040516020016103b895949392919061304b565b60408051808303601f190181529082905280516020909101206365612ae160e11b8252600482018190529150600090309063cac255c29060240160206040518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190613083565b60408051600180825281830190925291925060009190816020015b606081526020019060019003908161045d5790505090506104a86040518060400160405280600f81526020016e746f6b656e4964536574537461746560881b8152508360ff16610a7c565b816000815181106104bb576104bb612ff4565b6020908102919091010152925050505b92915050565b6000806104df836000610be9565b905060006104ee846001610be9565b6040516331048c1760e11b815263ffffffff8916600482015261ffff80891660248301528716604482015260ff821660648201529091506001600160a01b03891690636209182e90608401600060405180830381600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b505050506000610587816001600160801b03168460ff1660086000610c76565b9998505050505050505050565b6000806105a48360600151610c9b565b60ff1683606001516101400151516105bc9190612fc1565b90506000816001600160401b038111156105d8576105d861233a565b604051908082528060200260200182016040528015610601578160200160208202803683370190505b50905060005b8460600151610140015151811080156106205750600083115b1561083e57600085606001516101400151828151811061064257610642612ff4565b60200260200101519050806040015183868061065d906130a0565b97508151811061066f5761066f612ff4565b60200260200101818152505083851061082d5760008360405160200161069591906130bb565b6040516020818303038152906040528051906020012090506000876060015160200151886060015161010001516106cf8a60600151610cdb565b6106dc8b60600151610cf5565b856040516020016106f195949392919061304b565b60408051808303601f190181529082905280516020909101206365612ae160e11b8252600482018190529150600090309063cac255c29060240160206040518083038186803b15801561074357600080fd5b505afa158015610757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077b9190613083565b9050600060ff168160ff16146107b1604051806060016040528060358152602001613309603591396107ac88610d1a565b610d25565b906107d85760405162461bcd60e51b81526004016107cf91906130ff565b60405180910390fd5b50866001600160401b038111156107f1576107f161233a565b60405190808252806020026020018201604052801561081a578160200160208202803683370190505b5095506108278789613112565b97505050505b50610837816130a0565b9050610607565b5050505050565b602082015160018201805460408501516001600160a01b0316610100026001600160a81b031990911660ff9093169290921791909117905560005b825151811015610974576000836000015182815181106108a2576108a2612ff4565b60209081029190910181015184546001818101875560008781528490208385015160026005909402909101928301805460ff92831660ff19909116179055835180518454828801516001600160a01b0316610100026001600160a81b03199091169190931617919091178355604001518051939550919361092893918501920190612285565b5060608201518051610944916004840191602090910190612285565b50604082015180516109609160038401916020909101906122d0565b5050508061096d906130a0565b9050610880565b505050565b60008060008561ffff16875161098f9190612fc1565b9050600061099d8287612fd5565b6109a79086613112565b90508181106109bf5760016000935093505050610a51565b60008886815181106109d3576109d3612ff4565b60200260200101519050600080610a078c85815181106109f5576109f5612ff4565b60200260200101516000015184610d51565b9092509050600080610a218e8e8e8e61014c8f6001613129565b9092509050610a308284612fd5565b81610a3b8487612fd5565b610a459190613129565b98509850505050505050505b9550959350505050565b91821c91600080610a6f600180861b613112565b85169150505b9392505050565b60606000610a8984611042565b90506000610a968461104d565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081610ab25790505090508281600081518110610add57610add612ff4565b6020026020010181905250610b0d604051806040016040528060048152602001631d5a5b9d60e21b815250611042565b81600181518110610b2057610b20612ff4565b60200260200101819052508181600281518110610b3f57610b3f612ff4565b6020026020010181905250610b5381611060565b9695505050505050565b60004661a4b1811415610be25760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc9190613141565b91505090565b4391505090565b600080610c25610c208560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b611084565b9050610c6e610c4f828560ff1681518110610c4257610c42612ff4565b6020026020010151611084565b600281518110610c6157610c61612ff4565b6020026020010151611199565b949350505050565b600083821b8183610c8a600180881b613112565b901b19969096161795945050505050565b60006104cb8260a00151601060006008610cb59190613129565b610cc0906010613129565b610ccb906010613129565b610cd6906008613129565b610a5b565b60006104cb8260a00151601060006008610cd69190613129565b60006104cb8260a00151601060006008610d0f9190613129565b610cd6906010613129565b60606104cb826111e6565b60608282604051602001610d3a92919061315a565b604051602081830303815290604052905092915050565b6000806000806001905084602001516001600160a01b031686602001516001600160a01b0316148015610d965750845160ff1660021480610d965750845160ff166003145b15611035576000610da687611282565b90506000610db3886112c1565b90508015610e51576040870151610dde576000610dd1826001613129565b955095505050505061103b565b6000610df788604001518a61134390919063ffffffff16565b90506000811215610e11575092945090925061103b915050565b60ff831660011415610e2857809450819350610e4b565b60ff8316610e4b57610e3b816001613129565b9450610e48826001613129565b93505b50611032565b6000610e5c89611742565b905080600081518110610e7157610e71612ff4565b60200260200101516000108015610ebc575080600181518110610e9657610e96612ff4565b602002602001015181600081518110610eb157610eb1612ff4565b602002602001015111155b15611030576040880151610f20576000945080600081518110610ee157610ee1612ff4565b602002602001015181600181518110610efc57610efc612ff4565b6020026020010151610f0e9190613112565b610f19906002613129565b9350611030565b60ff831660011415610fa35780600081518110610f3f57610f3f612ff4565b60200260200101518860400151610f569190613112565b945080600081518110610f6b57610f6b612ff4565b602002602001015181600181518110610f8657610f86612ff4565b6020026020010151610f989190613112565b610f19906001613129565b60ff83166110305780600081518110610fbe57610fbe612ff4565b60200260200101518860400151610fd59190613112565b610fe0906001613129565b945080600081518110610ff557610ff5612ff4565b60200260200101518160018151811061101057611010612ff4565b60200260200101516110229190613112565b61102d906002613129565b93505b505b50505b90925090505b9250929050565b60606104cb826118b3565b60606104cb61105b83611903565b6118b3565b6060600061106d83611a40565b9050610a7561107e825160c0611b71565b82611d27565b606061108f82611da4565b61109857600080fd5b60006110a383611ddd565b90506000816001600160401b038111156110bf576110bf61233a565b60405190808252806020026020018201604052801561110457816020015b60408051808201909152600080825260208201528152602001906001900390816110dd5790505b50905060006111168560200151611e60565b85602001516111259190613129565b90506000805b8481101561118e5761113c83611ee1565b915060405180604001604052808381526020018481525084828151811061116557611165612ff4565b602090810291909101015261117a8284613129565b925080611186816130a0565b91505061112b565b509195945050505050565b8051600090158015906111ae57508151602110155b6111b757600080fd5b6000806111c384611f85565b815191935091506020821015610c6e5760208290036101000a9004949350505050565b606060006111f383611fcc565b60010190506000816001600160401b038111156112125761121261233a565b6040519080825280601f01601f19166020018201604052801561123c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846112755761127a565b611246565b509392505050565b60006104cb826040015160008151811061129e5761129e612ff4565b6020026020010151600460ff16600060046112b99190613196565b60ff16610a5b565b805160009060ff1615806112d95750815160ff166001145b156112e657506000919050565b815160ff16600214806112fd5750815160ff166003145b1561133b57600061130d836120a2565b905060ff811660011415611332576000611326846120d5565b61ffff16949350505050565b50600092915050565b506000919050565b815160009060ff16158061135b5750825160ff166001145b1561136957506000196104cb565b825160ff16600314156115c3576000611381846120a2565b905060ff8116600114156115b857600061139a856120d5565b9050600085604001516000815181106113b5576113b5612ff4565b60200260200101519050600086604001516001815181106113d8576113d8612ff4565b60200260200101519050600087604001516002815181106113fb576113fb612ff4565b602002602001015190506000886040015160038151811061141e5761141e612ff4565b602002602001015190506000896040015160008151811061144157611441612ff4565b6020026020010181815250506000896040015160018151811061146657611466612ff4565b6020026020010181815250506000896040015160028151811061148b5761148b612ff4565b602002602001018181525050600089604001516003815181106114b0576114b0612ff4565b60200260200101818152505060006114dd8a604001518760046114d391906131bb565b61ffff168b612134565b9050848a604001516000815181106114f7576114f7612ff4565b602002602001018181525050838a6040015160018151811061151b5761151b612ff4565b602002602001018181525050828a6040015160028151811061153f5761153f612ff4565b602002602001018181525050818a6040015160038151811061156357611563612ff4565b60200260200101818152505060006000199050898b60400151838151811061158d5761158d612ff4565b602002602001015114156115a9576115a6600483613112565b90505b97506104cb9650505050505050565b6000199150506104cb565b825160ff16600214156117385760006115db846120a2565b905060ff8116600114156115b85760006115f4856120d5565b90506000856040015160008151811061160f5761160f612ff4565b602002602001015190506000866040015160018151811061163257611632612ff4565b602002602001015190506000876040015160008151811061165557611655612ff4565b6020026020010181815250506000876040015160018151811061167a5761167a612ff4565b60200260200101818152505060006116a7886040015185600261169d91906131bb565b61ffff1689612134565b90508288604001516000815181106116c1576116c1612ff4565b6020026020010181815250508188604001516001815181106116e5576116e5612ff4565b60200260200101818152505060006000199050878960400151838151811061170f5761170f612ff4565b6020026020010151141561172b57611728600483613112565b90505b95506104cb945050505050565b5060001992915050565b6040805160028082526060808301845292600092919060208301908036833701905050835190915060ff166002141561180d576000611780846120a2565b905060ff81166118075783604001516002815181106117a1576117a1612ff4565b6020026020010151826000815181106117bc576117bc612ff4565b60200260200101818152505083604001516003815181106117df576117df612ff4565b6020026020010151826001815181106117fa576117fa612ff4565b6020026020010181815250505b506104cb565b825160ff16600314156104cb576000611825846120a2565b905060ff81166118ac57836040015160048151811061184657611846612ff4565b60200260200101518260008151811061186157611861612ff4565b602002602001018181525050836040015160058151811061188457611884612ff4565b60200260200101518260018151811061189f5761189f612ff4565b6020026020010181815250505b5092915050565b606080825160011480156118e257506080836000815181106118d7576118d7612ff4565b016020015160f81c11155b156118ee5750816104cb565b610a756118fd84516080611b71565b84611d27565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b60208110156119775781818151811061194c5761194c612ff4565b01602001516001600160f81b0319161561196557611977565b8061196f816130a0565b915050611931565b6000611984826020613112565b6001600160401b0381111561199b5761199b61233a565b6040519080825280601f01601f1916602001820160405280156119c5576020820181803683370190505b50905060005b8151811015611a375783836119df816130a0565b9450815181106119f1576119f1612ff4565b602001015160f81c60f81b828281518110611a0e57611a0e612ff4565b60200101906001600160f81b031916908160001a90535080611a2f816130a0565b9150506119cb565b50949350505050565b6060815160001415611a625760408051600080825260208201909252906118ac565b6000805b8351811015611aa957838181518110611a8157611a81612ff4565b60200260200101515182611a959190613129565b915080611aa1816130a0565b915050611a66565b6000826001600160401b03811115611ac357611ac361233a565b6040519080825280601f01601f191660200182016040528015611aed576020820181803683370190505b50600092509050602081015b8551831015611a37576000868481518110611b1657611b16612ff4565b602002602001015190506000602082019050611b34838284516121f2565b878581518110611b4657611b46612ff4565b60200260200101515183611b5a9190613129565b925050508280611b69906130a0565b935050611af9565b6060806038841015611bdb5760408051600180825281830190925290602082018180368337019050509050611ba68385613129565b601f1a60f81b81600081518110611bbf57611bbf612ff4565b60200101906001600160f81b031916908160001a905350610a75565b600060015b611bea8187612fc1565b15611c105781611bf9816130a0565b9250611c09905061010082612fd5565b9050611be0565b611c1b826001613129565b6001600160401b03811115611c3257611c3261233a565b6040519080825280601f01601f191660200182016040528015611c5c576020820181803683370190505b509250611c698583613129565b611c74906037613129565b601f1a60f81b83600081518110611c8d57611c8d612ff4565b60200101906001600160f81b031916908160001a905350600190505b818111611d1e57610100611cbd8284613112565b611cc9906101006132c5565b611cd39088612fc1565b611cdd91906132d1565b601f1a60f81b838281518110611cf557611cf5612ff4565b60200101906001600160f81b031916908160001a90535080611d16816130a0565b915050611ca9565b50509392505050565b6060806040519050835180825260208201818101602087015b81831015611d58578051835260209283019201611d40565b50855184518101855292509050808201602086015b81831015611d85578051835260209283019201611d6d565b508651929092011591909101601f01601f191660405250905092915050565b8051600090611db557506000919050565b6020820151805160001a9060c0821015611dd3575060009392505050565b5060019392505050565b8051600090611dee57506000919050565b600080611dfe8460200151611e60565b8460200151611e0d9190613129565b9050600084600001518560200151611e259190613129565b90505b80821015611e5757611e3982611ee1565b611e439083613129565b915082611e4f816130a0565b935050611e28565b50909392505050565b8051600090811a6080811015611e795750600092915050565b60b8811080611e94575060c08110801590611e94575060f881105b15611ea25750600192915050565b60c0811015611ecf57611eb7600160b86132e5565b611ec49060ff1682613112565b610a75906001613129565b611eb7600160f86132e5565b50919050565b80516000908190811a6080811015611efc57600191506118ac565b60b8811015611f2257611f10608082613112565b611f1b906001613129565b91506118ac565b60c0811015611f4f5760b78103600185019450806020036101000a855104600182018101935050506118ac565b60f8811015611f6357611f1060c082613112565b60019390930151602084900360f7016101000a900490920160f5190192915050565b6000806000611f978460200151611e60565b90506000818560200151611fab9190613129565b90506000828660000151611fbf9190613112565b9196919550909350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061200b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612035576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061205357662386f26fc10000830492506010015b6305f5e100831061206b576305f5e100830492506008015b612710831061207f57612710830492506004015b60648310612091576064830492506002015b600a83106104cb5760010192915050565b60006104cb82604001516000815181106120be576120be612ff4565b6020026020010151600460ff16600060ff16610a5b565b805160009060ff16600214806120ef5750815160ff166003145b1561133b576104cb826040015160008151811061210e5761210e612ff4565b6020026020010151601060ff16600060046121299190613196565b6112b9906004613196565b600083516000141561214857506000610a75565b6000835b8082101561219f576000612160838361226a565b90508487828151811061217557612175612ff4565b6020026020010151111561218b57809150612199565b612196816001613129565b92505b5061214c565b6000821180156121d1575083866121b7600185613112565b815181106121c7576121c7612ff4565b6020026020010151145b156121ea576121e1600183613112565b92505050610a75565b509050610a75565b8282825b6020811061222e578151835261220d602084613129565b925061221a602083613129565b9150612227602082613112565b90506121f6565b6000600161223d836020613112565b612249906101006132c5565b6122539190613112565b925184518416931916929092179092525050505050565b60006122796002848418612fc1565b610a7590848416613129565b8280548282559060005260206000209081019282156122c0579160200282015b828111156122c05782518255916020019190600101906122a5565b506122cc929150612325565b5090565b8280548282559060005260206000209081019282156122c0579160200282015b828111156122c057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906122f0565b5b808211156122cc5760008155600101612326565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156123725761237261233a565b60405290565b604051606081016001600160401b03811182821017156123725761237261233a565b60405160a081016001600160401b03811182821017156123725761237261233a565b604080519081016001600160401b03811182821017156123725761237261233a565b60405161016081016001600160401b03811182821017156123725761237261233a565b60405161018081016001600160401b03811182821017156123725761237261233a565b604051601f8201601f191681016001600160401b038111828210171561244c5761244c61233a565b604052919050565b60006001600160401b0382111561246d5761246d61233a565b5060051b60200190565b60ff8116811461248657600080fd5b50565b803561249481612477565b919050565b6001600160a01b038116811461248657600080fd5b803561249481612499565b600082601f8301126124ca57600080fd5b813560206124df6124da83612454565b612424565b82815260059290921b840181019181810190868411156124fe57600080fd5b8286015b848110156125195780358352918301918301612502565b509695505050505050565b600082601f83011261253557600080fd5b813560206125456124da83612454565b82815260059290921b8401810191818101908684111561256457600080fd5b8286015b8481101561251957803561257b81612499565b8352918301918301612568565b600082601f83011261259957600080fd5b813560206125a96124da83612454565b82815260059290921b840181019181810190868411156125c857600080fd5b8286015b848110156125195780356001600160401b03808211156125eb57600080fd5b90880190601f196080838c038201121561260457600080fd5b61260c612350565b878401358381111561261d57600080fd5b84016060818e038401121561263157600080fd5b612639612378565b92508881013561264881612477565b835260408181013561265981612499565b848b015260608201358581111561266f57600080fd5b61267d8f8c838601016124b9565b8286015250838352612690818701612489565b8a84015260608601359350848411156126a857600080fd5b6126b68e8b86890101612524565b908301525060808401359150828211156126cf57600080fd5b6126dd8c89848701016124b9565b606082015286525050509183019183016125cc565b803563ffffffff8116811461249457600080fd5b600082601f83011261271757600080fd5b813560206127276124da83612454565b82815260059290921b8401810191818101908684111561274657600080fd5b8286015b848110156125195780356001600160401b038082111561276957600080fd5b9088019060a0828b03601f1901121561278157600080fd5b61278961239a565b8683013561279681612477565b81526040838101356127a781612499565b828901526060848101358284015260808501359083015260a0840135838111156127d15760008081fd5b8085019450508b603f8501126127e957600092508283fd5b8784013592506127fb6124da84612454565b83815260069390931b8401810192888101908d85111561281b5760008081fd5b948201945b848610156128725782868f0312156128385760008081fd5b6128406123bc565b612849876126f2565b81528a8701358060040b811461285f5760008081fd5b818c015282529482019490890190612820565b608084015250508552505091830191830161274a565b803561ffff8116811461249457600080fd5b600080600080608085870312156128b057600080fd5b84356001600160401b03808211156128c757600080fd5b6128d388838901612588565b955060208701359150808211156128e957600080fd5b506128f687828801612706565b93505061290560408601612888565b9396929550929360600135925050565b600082601f83011261292657600080fd5b81356001600160401b0381111561293f5761293f61233a565b612952601f8201601f1916602001612424565b81815284602083860101111561296757600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160801b038116811461249457600080fd5b600080604083850312156129ae57600080fd5b82356001600160401b03808211156129c557600080fd5b9084019061016082870312156129da57600080fd5b6129e26123de565b6129eb836124ae565b81526129f9602084016124ae565b6020820152612a0a604084016126f2565b6040820152612a1b60608401612888565b6060820152612a2c60808401612888565b6080820152612a3d60a08401612489565b60a0820152612a4e60c084016124ae565b60c0820152612a5f60e084016126f2565b60e0820152610100612a728185016124ae565b90820152610120612a84848201612489565b908201526101408381013583811115612a9c57600080fd5b612aa889828701612915565b828401525050809450505050612ac060208401612984565b90509250929050565b60005b83811015612ae4578181015183820152602001612acc565b83811115612af3576000848401525b50505050565b60008151808452612b11816020860160208601612ac9565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612b7a57603f19888603018452612b68858351612af9565b94509285019290850190600101612b4c565b5092979650505050505050565b600080600080600060a08688031215612b9f57600080fd5b8535612baa81612499565b9450612bb8602087016126f2565b9350612bc660408701612888565b9250612bd460608701612888565b915060808601356001600160401b03811115612bef57600080fd5b612bfb88828901612915565b9150509295509295909350565b600060208284031215612c1a57600080fd5b81356001600160401b0380821115612c3157600080fd5b9083019060a08286031215612c4557600080fd5b612c4d61239a565b8235612c5881612499565b81526020830135612c6881612499565b60208201526040830135612c7b81612499565b6040820152606083013582811115612c9257600080fd5b83016101808188031215612ca557600080fd5b612cad612401565b612cb6826124ae565b8152612cc4602083016124ae565b6020820152612cd5604083016124ae565b6040820152612ce6606083016124ae565b60608201526080820135608082015260a082013560a0820152612d0b60c083016126f2565b60c0820152612d1c60e083016126f2565b60e0820152610100612d2f8184016126f2565b90820152610120612d41838201612489565b908201526101408281013585811115612d5957600080fd5b612d658a828601612706565b8284015250506101608083013585811115612d7f57600080fd5b612d8b8a828601612915565b8284015250508060608401525050612da560808401612489565b608082015295945050505050565b600082601f830112612dc457600080fd5b81356020612dd46124da83612454565b82815260059290921b84018101918181019086841115612df357600080fd5b8286015b848110156125195780356001600160401b03811115612e165760008081fd5b612e248986838b0101612915565b845250918301918301612df7565b60008060408385031215612e4557600080fd5b82356001600160401b0380821115612e5c57600080fd5b9084019060a08287031215612e7057600080fd5b612e7861239a565b823582811115612e8757600080fd5b612e9388828601612588565b825250612ea260208401612489565b6020820152612eb3604084016124ae565b6040820152606083013582811115612eca57600080fd5b612ed688828601612524565b606083015250608083013582811115612eee57600080fd5b612efa88828601612db3565b6080830152509660209590950135955050505050565b600080600080600060a08688031215612f2857600080fd5b85356001600160401b0380821115612f3f57600080fd5b612f4b89838a01612588565b96506020880135915080821115612f6157600080fd5b50612f6e88828901612706565b945050612f7d60408701612888565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612fd057612fd0612f95565b500490565b6000816000190483118215151615612fef57612fef612fab565b500290565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301c57600080fd5b8151610a7581612499565b80516020808301519190811015611edb5760001960209190910360031b1b16919050565b6001600160a01b0395909516855263ffffffff93909316602085015261ffff9182166040850152166060830152608082015260a00190565b60006020828403121561309557600080fd5b8151610a7581612477565b60006000198214156130b4576130b4612fab565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156130f3578351835292840192918401916001016130d7565b50909695505050505050565b602081526000610a756020830184612af9565b60008282101561312457613124612fab565b500390565b6000821982111561313c5761313c612fab565b500190565b60006020828403121561315357600080fd5b5051919050565b6000835161316c818460208801612ac9565b600b60fa1b908301908152835161318a816001840160208801612ac9565b01600101949350505050565b600060ff821660ff84168060ff038211156131b3576131b3612fab565b019392505050565b600061ffff8083168185168083038211156131d8576131d8612fab565b01949350505050565b600181815b8085111561321c57816000190482111561320257613202612fab565b8085161561320f57918102915b93841c93908002906131e6565b509250929050565b600082613233575060016104cb565b81613240575060006104cb565b816001811461325657600281146132605761327c565b60019150506104cb565b60ff84111561327157613271612fab565b50506001821b6104cb565b5060208310610133831016604e8410600b841016171561329f575081810a6104cb565b6132a983836131e1565b80600019048211156132bd576132bd612fab565b029392505050565b6000610a758383613224565b6000826132e0576132e0612f95565b500690565b600060ff821660ff8416808210156132ff576132ff612fab565b9003939250505056fe616c6c6f63617465206c6179657220746f6b656e207365742064697361626c6520656e6420746f6b656e536c6f74496e6465782069a26469706673582212200aec13d427f16fa25efb41793d19712107c4fd810d0abe61c97c71de556f682d64736f6c63430008080033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
