{
  "_format": "hh-sol-artifact-1",
  "contractName": "Claim2Test",
  "sourceName": "contracts/test/claim/Claim2Test.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "name": "BlockHashNotExists",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ClaimAggregatorMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ClaimChainVerificationFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ClaimProofVerificationFailed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidDepositAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotFinishedPeriod",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PeriodIntervalZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RelayLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "depositAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "contribution",
          "type": "uint256"
        }
      ],
      "name": "ContributionRecorded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "withdrawalHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "tokenIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "nullifier",
              "type": "bytes32"
            }
          ],
          "indexed": false,
          "internalType": "struct WithdrawalLib.Withdrawal",
          "name": "withdrawal",
          "type": "tuple"
        }
      ],
      "name": "DirectWithdrawalQueued",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "claimVerifier",
          "type": "address"
        }
      ],
      "name": "VerifierUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "RELAY_LIMIT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REWARD_TOKEN_INDEX",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimVerifier",
      "outputs": [
        {
          "internalType": "contract IPlonkVerifier",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contribution",
      "outputs": [
        {
          "internalType": "contract IContribution",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllocationConstants",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "startTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "periodInterval",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "genesisTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "phase0RewardPerDay",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "numPhases",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "phase0Period",
              "type": "uint256"
            }
          ],
          "internalType": "struct AllocationLib.AllocationConstants",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "periodNumber",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getAllocationInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "totalContribution",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "allocationPerPeriod",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "userContribution",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "userAllocation",
              "type": "uint256"
            }
          ],
          "internalType": "struct AllocationLib.AllocationInfo",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_scrollMessenger",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_claimVerifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_rollup",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_contribution",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "periodInterval",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "l2ScrollMessenger",
      "outputs": [
        {
          "internalType": "contract IL2ScrollMessenger",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidity",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nullifierNonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "nullifiers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "users",
          "type": "address[]"
        }
      ],
      "name": "relayClaims",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rollup",
      "outputs": [
        {
          "internalType": "contract IRollup",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "nullifier",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint32",
              "name": "blockNumber",
              "type": "uint32"
            }
          ],
          "internalType": "struct ChainedClaimLib.ChainedClaim[]",
          "name": "claims",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "lastClaimHash",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "claimAggregator",
              "type": "address"
            }
          ],
          "internalType": "struct ClaimProofPublicInputsLib.ClaimProofPublicInputs",
          "name": "publicInputs",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "submitClaimProof",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_claimVerifier",
          "type": "address"
        }
      ],
      "name": "updateVerifier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516123466100fd60003960008181611284015281816112ad01526113f301526123466000f3fe6080604052600436106101405760003560e01c806362a66853116100b6578063ad3cb1cc1161006f578063ad3cb1cc146103c9578063c0e70bbd14610407578063cb23bcb514610427578063cc1966b214610447578063e1cb0e52146104a8578063f2fde38b146104bc57600080fd5b806362a66853146102ba578063715018a61461030d5780637857cc7b146103225780638da5cb5b1461034c57806397fc007c14610389578063a93539d0146103a957600080fd5b806337a38d311161010857806337a38d3114610227578063419b8c57146102475780634f1ef2861461025d57806350520b1f1461027057806352d1902d1461029057806354adcb99146102a557600080fd5b8063086146d2146101455780631460e3901461016d5780631a6865021461018f5780632997e86b146101c75780632c36a5d414610207575b600080fd5b34801561015157600080fd5b5061015a6104dc565b6040519081526020015b60405180910390f35b34801561017957600080fd5b5061018d610188366004611b95565b6104ed565b005b34801561019b57600080fd5b506003546101af906001600160a01b031681565b6040516001600160a01b039091168152602001610164565b3480156101d357600080fd5b506101f76101e2366004611c17565b600a6020526000908152604090205460ff1681565b6040519015158152602001610164565b34801561021357600080fd5b5061018d610222366004611c90565b6106ed565b34801561023357600080fd5b5061018d610242366004611d48565b6108ee565b34801561025357600080fd5b5061015a60055481565b61018d61026b366004611e0d565b610cb9565b34801561027c57600080fd5b506004546101af906001600160a01b031681565b34801561029c57600080fd5b5061015a610cd8565b3480156102b157600080fd5b5061015a606481565b3480156102c657600080fd5b506102da6102d5366004611eb6565b610cf5565b60405161016491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561031957600080fd5b5061018d610d35565b34801561032e57600080fd5b50610337600181565b60405163ffffffff9091168152602001610164565b34801561035857600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101af565b34801561039557600080fd5b5061018d6103a4366004611ee2565b610d49565b3480156103b557600080fd5b506000546101af906001600160a01b031681565b3480156103d557600080fd5b506103fa604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101649190611f4d565b34801561041357600080fd5b506001546101af906001600160a01b031681565b34801561043357600080fd5b506002546101af906001600160a01b031681565b34801561045357600080fd5b5061045c610dc0565b6040516101649190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b3480156104b457600080fd5b50605861015a565b3480156104c857600080fd5b5061018d6104d7366004611ee2565b610e03565b60006104e86006610e41565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156105325750825b90506000826001600160401b0316600114801561054e5750303b155b90508115801561055c575080155b1561057a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105a457845460ff60401b1916600160401b1785555b6001600160a01b038c1615806105c157506001600160a01b038b16155b806105d357506001600160a01b038a16155b806105e557506001600160a01b038916155b806105f757506001600160a01b038816155b8061060957506001600160a01b038716155b1561062757604051639fabe1c160e01b815260040160405180910390fd5b6106308c610e60565b610638610e71565b610643600687610e79565b600180546001600160a01b03199081166001600160a01b038e8116919091179092556000805482168d84161790556002805482168b84161790556004805482168a841617905560038054909116918b1691909117905583156106df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6106fa8585858585610ee1565b6000805b8581101561084c57600087878381811061071a5761071a611f60565b905060a002018036038101906107309190611f76565b6040808201516000908152600a602052205490915060ff16156107535750610844565b6040818101516000908152600a602052818120805460ff191660011790556002546080840151925163d2b210a160e01b815263ffffffff909316600484015290916001600160a01b039091169063d2b210a190602401602060405180830381865afa1580156107c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ea9190611ffe565b905081606001518114610821578160600151604051630631b89b60e41b815260040161081891815260200190565b60405180910390fd5b8151602083015161083491600691611054565b8361083e8161202d565b94505050505b6001016106fe565b506004546001600160a01b031663f099f9f57fda5ef0dc178ac91b88a75e00c784aa6cda7295d02eebaec5c697f2b7ca57cdba336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101849052606401600060405180830381600087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b50505050505050505050565b826108f96006610e41565b1161091757604051635c6f5fd960e01b815260040160405180910390fd5b6000816001600160401b0381111561093157610931611dc7565b60405190808252806020026020018201604052801561098357816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161094f5790505b506005549091506000805b84811015610ac55760008686838181106109aa576109aa611f60565b90506020020160208101906109bf9190611ee2565b905060006109cf60068a8461111e565b9050806000036109e0575050610abd565b60006109ec8587612046565b60405164636c61696d60d81b6020820152602581019190915260450160408051601f1981840301815282825280516020918201206080840183526001600160a01b03871680855260019285019290925291830185905260608301829052909250610a5582611185565b7fdbe674c66915823ad8cb90cac7eb482e951adec0311c9cf091da19de527ee93583604051610a849190612059565b60405180910390a380888781518110610a9f57610a9f611f60565b60200260200101819052508580610ab59061202d565b965050505050505b60010161098e565b5080600003610ad657505050505050565b610ae08183612046565b6005556064811115610b0557604051635a8a34e560e01b815260040160405180910390fd5b6000816001600160401b03811115610b1f57610b1f611dc7565b604051908082528060200260200182016040528015610b7157816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610b3d5790505b50905060005b82811015610bbe57848181518110610b9157610b91611f60565b6020026020010151828281518110610bab57610bab611f60565b6020908102919091010152600101610b77565b5060408051600080825260208201909252639d6a54cb60e01b90610be790849060448101612093565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050610c24816111fd565b6004546001600160a01b031663f099f9f57fb5676ab224a46e60d2dabad66cec9aca97207e56cceb702167f49c074d12052c336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101869052606401600060405180830381600087803b158015610ca557600080fd5b505af11580156106df573d6000803e3d6000fd5b610cc1611279565b610cca8261131e565b610cd48282611326565b5050565b6000610ce26113e8565b506000805160206122f183398151915290565b610d206040518060800160405280600081526020016000815260200160008152602001600081525090565b610d2c60068484611431565b90505b92915050565b610d3d6114d5565b610d476000611530565b565b610d516114d5565b6001600160a01b038116610d7857604051639fabe1c160e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee32791a250565b610df96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6104e860066115a1565b610e0b6114d5565b6001600160a01b038116610e3557604051631e4fbdf760e01b815260006004820152602401610818565b610e3e81611530565b50565b6001810154815460009190610e56904261214d565b610d2f9190612160565b610e6861161f565b610e3e81611668565b610d4761161f565b80600003610e9a57604051630938939360e41b815260040160405180910390fd5b6001820181905562015180811115610ecc57610eb96201518042612160565b610ec69062015180612182565b82555050565b80610ed78142612160565b610ec69190612182565b610f4a83600001358686808060200260200160405190810160405280939291908181526020016000905b82821015610f3757610f2860a08302860136819003810190611f76565b81526020019060010190610f0b565b505050505061167090919063ffffffff16565b610f675760405163ec196f1360e01b815260040160405180910390fd5b33610f786040850160208601611ee2565b6001600160a01b031614610f9f576040516343c30a7760e01b815260040160405180910390fd5b6000546001600160a01b0316637e4f7a8a8383610fd1610fcc610fc7368a90038a018a612199565b6116cd565b611700565b6040518463ffffffff1660e01b8152600401610fef939291906121ee565b602060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190612269565b61104d57604051631f53b29360e01b815260040160405180910390fd5b5050505050565b600061105f84610e41565b9050600061106c83611778565b90508085600201600084815260200190815260200160002060008282546110939190612046565b9091555050600082815260038601602090815260408083206001600160a01b0388168452909152812080548392906110cc908490612046565b909155505060408051848152602081018390526001600160a01b0386169184917f8d0cf479602fd3cf00c7e5f661984c44659a827edb5f23cd85094cdc942f4649910160405180910390a35050505050565b600061112984610e41565b831061114857604051635c6f5fd960e01b815260040160405180910390fd5b60006111558585856117f5565b600085815260038701602090815260408083206001600160a01b03881684529091528120559150505b9392505050565b600081600001518260200151836040015184606001516040516020016111e0949392919060609490941b6001600160601b031916845260e09290921b6001600160e01b03191660148401526018830152603882015260580190565b604051602081830303815290604052805190602001209050919050565b600154600354604051635f7b157760e01b8152600092600019926001600160a01b0391821692635f7b157792869261124292911690839089908890339060040161228b565b6000604051808303818588803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b5050505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061130057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112f46000805160206122f1833981519152546001600160a01b031690565b6001600160a01b031614155b15610d475760405163703e46dd60e11b815260040160405180910390fd5b610e3e6114d5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611380575060408051601f3d908101601f1916820190925261137d91810190611ffe565b60015b6113a857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610818565b6000805160206122f183398151915281146113d957604051632a87526960e21b815260048101829052602401610818565b6113e38383611865565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d475760405163703e46dd60e11b815260040160405180910390fd5b61145c6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008381526002850160205260408120549061147886866118bb565b600086815260038801602090815260408083206001600160a01b03891684529091528120549192506114ab8888886117f5565b60408051608081018252958652602086019490945292840191909152506060820152949350505050565b336115077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610d475760405163118cdaa760e01b8152336004820152602401610818565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6115da6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805160c0810182528254815260019092015460208301526366b2e150908201526a076496d888478bcef00000606082015260076080820152601060a082015290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610d4757604051631afcd79f60e31b815260040160405180910390fd5b610e0b61161f565b600080805b84518110156116b157600085828151811061169257611692611f60565b602002602001015190506116a681846118f9565b925050600101611675565b508281146116c3576000915050610d2f565b5060019392505050565b6000816000015182602001516040516020016111e092919091825260601b6001600160601b031916602082015260340190565b604080516008808252610120820190925260609160009190602082016101008036833701905050905060005b600881101561177157611740816020612182565b84901b60e01c63ffffffff1682828151811061175e5761175e611f60565b602090810291909101015260010161172c565b5092915050565b60008167016345785d8a00000361179157506001919050565b81670de0b6b3a7640000036117a857506004919050565b81678ac7230489e80000036117bf57506009919050565b8168056bc75e2d63100000036117d757506010919050565b60405163fe9ba5cd60e01b815260040160405180910390fd5b919050565b600082815260028401602052604081205480820361181757600091505061117e565b600084815260038601602090815260408083206001600160a01b0387168452909152902054819061184887876118bb565b6118529190612182565b61185c9190612160565b95945050505050565b61186e82611985565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156118b3576113e382826119ea565b610cd4611a57565b6000806118d18460000154856001015485611a76565b9050620151808460010154826118e79190612182565b6118f19190612160565b949350505050565b600081836000015184602001518560400151866060015187608001516040516020016119679695949392919095865260609490941b6001600160601b031916602086015260348501929092526054840152607483015260e01b6001600160e01b031916609482015260980190565b60405160208183030381529060405280519060200120905092915050565b806001600160a01b03163b6000036119bb57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610818565b6000805160206122f183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611a0791906122d4565b600060405180830381855af49150503d8060008114611a42576040519150601f19603f3d011682016040523d82523d6000602084013e611a47565b606091505b509150915061185c858383611af9565b3415610d475760405163b398979f60e01b815260040160405180910390fd5b600080620151806366b2e150611a8c8686612182565b611a969088612046565b611aa0919061214d565b611aaa9190612160565b90506a076496d888478bcef0000060005b6007811015611aec576010811b80841015611adc578294505050505061117e565b90920391600191821c9101611abb565b5060009695505050505050565b606082611b0e57611b0982611b55565b61117e565b8151158015611b2557506001600160a01b0384163b155b15611b4e57604051639996b31560e01b81526001600160a01b0385166004820152602401610818565b508061117e565b805115611b655780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b03811681146117f057600080fd5b600080600080600080600060e0888a031215611bb057600080fd5b611bb988611b7e565b9650611bc760208901611b7e565b9550611bd560408901611b7e565b9450611be360608901611b7e565b9350611bf160808901611b7e565b9250611bff60a08901611b7e565b96999598509396929591949193505060c09091013590565b600060208284031215611c2957600080fd5b5035919050565b600060408284031215611c4257600080fd5b50919050565b60008083601f840112611c5a57600080fd5b5081356001600160401b03811115611c7157600080fd5b602083019150836020828501011115611c8957600080fd5b9250929050565b600080600080600060808688031215611ca857600080fd5b85356001600160401b03811115611cbe57600080fd5b8601601f81018813611ccf57600080fd5b80356001600160401b03811115611ce557600080fd5b88602060a083028401011115611cfa57600080fd5b602091820196509450611d109088908801611c30565b925060608601356001600160401b03811115611d2b57600080fd5b611d3788828901611c48565b969995985093965092949392505050565b600080600060408486031215611d5d57600080fd5b8335925060208401356001600160401b03811115611d7a57600080fd5b8401601f81018613611d8b57600080fd5b80356001600160401b03811115611da157600080fd5b8660208260051b8401011115611db657600080fd5b939660209190910195509293505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611e0557611e05611dc7565b604052919050565b60008060408385031215611e2057600080fd5b611e2983611b7e565b915060208301356001600160401b03811115611e4457600080fd5b8301601f81018513611e5557600080fd5b80356001600160401b03811115611e6e57611e6e611dc7565b611e81601f8201601f1916602001611ddd565b818152866020838501011115611e9657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060408385031215611ec957600080fd5b82359150611ed960208401611b7e565b90509250929050565b600060208284031215611ef457600080fd5b610d2c82611b7e565b60005b83811015611f18578181015183820152602001611f00565b50506000910152565b60008151808452611f39816020860160208601611efd565b601f01601f19169290920160200192915050565b602081526000610d2c6020830184611f21565b634e487b7160e01b600052603260045260246000fd5b600060a0828403128015611f8957600080fd5b5060405160009060a081016001600160401b0381118282101715611faf57611faf611dc7565b604052611fbb84611b7e565b8152602084810135908201526040808501359082015260608085013590820152608084013563ffffffff81168114611ff1578283fd5b6080820152949350505050565b60006020828403121561201057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161203f5761203f612017565b5060010190565b80820180821115610d2f57610d2f612017565b81516001600160a01b0316815260208083015163ffffffff1690820152604080830151908201526060808301519082015260808101610d2f565b6040808252835190820181905260009060208501906060840190835b81811015612105576120ef83855180516001600160a01b0316825260208082015163ffffffff169083015260408082015190830152606090810151910152565b60209390930192608092909201916001016120af565b50508381036020808601919091528551808352918101925085019060005b81811015612141578251845260209384019390920191600101612123565b50919695505050505050565b81810381811115610d2f57610d2f612017565b60008261217d57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d2f57610d2f612017565b600060408284031280156121ac57600080fd5b50604080519081016001600160401b03811182821017156121cf576121cf611dc7565b604052823581526121e260208401611b7e565b60208201529392505050565b60408152826040820152828460608301376000606084830101526000601f19601f8501168201606081016060848303016020850152808551808352608084019150602087019350600092505b8083101561225d578351825260208201915060208401935060018301925061223a565b50979650505050505050565b60006020828403121561227b57600080fd5b8151801515811461117e57600080fd5b60018060a01b038616815284602082015260a0604082015260006122b260a0830186611f21565b6060830194909452506001600160a01b03919091166080909101529392505050565b600082516122e6818460208701611efd565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220e6f266c95f4fbbcd2ca79a7801615346ffbf7ad98a609fbcb40917aba43770b764736f6c634300081b0033",
  "deployedBytecode": "0x6080604052600436106101405760003560e01c806362a66853116100b6578063ad3cb1cc1161006f578063ad3cb1cc146103c9578063c0e70bbd14610407578063cb23bcb514610427578063cc1966b214610447578063e1cb0e52146104a8578063f2fde38b146104bc57600080fd5b806362a66853146102ba578063715018a61461030d5780637857cc7b146103225780638da5cb5b1461034c57806397fc007c14610389578063a93539d0146103a957600080fd5b806337a38d311161010857806337a38d3114610227578063419b8c57146102475780634f1ef2861461025d57806350520b1f1461027057806352d1902d1461029057806354adcb99146102a557600080fd5b8063086146d2146101455780631460e3901461016d5780631a6865021461018f5780632997e86b146101c75780632c36a5d414610207575b600080fd5b34801561015157600080fd5b5061015a6104dc565b6040519081526020015b60405180910390f35b34801561017957600080fd5b5061018d610188366004611b95565b6104ed565b005b34801561019b57600080fd5b506003546101af906001600160a01b031681565b6040516001600160a01b039091168152602001610164565b3480156101d357600080fd5b506101f76101e2366004611c17565b600a6020526000908152604090205460ff1681565b6040519015158152602001610164565b34801561021357600080fd5b5061018d610222366004611c90565b6106ed565b34801561023357600080fd5b5061018d610242366004611d48565b6108ee565b34801561025357600080fd5b5061015a60055481565b61018d61026b366004611e0d565b610cb9565b34801561027c57600080fd5b506004546101af906001600160a01b031681565b34801561029c57600080fd5b5061015a610cd8565b3480156102b157600080fd5b5061015a606481565b3480156102c657600080fd5b506102da6102d5366004611eb6565b610cf5565b60405161016491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561031957600080fd5b5061018d610d35565b34801561032e57600080fd5b50610337600181565b60405163ffffffff9091168152602001610164565b34801561035857600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101af565b34801561039557600080fd5b5061018d6103a4366004611ee2565b610d49565b3480156103b557600080fd5b506000546101af906001600160a01b031681565b3480156103d557600080fd5b506103fa604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101649190611f4d565b34801561041357600080fd5b506001546101af906001600160a01b031681565b34801561043357600080fd5b506002546101af906001600160a01b031681565b34801561045357600080fd5b5061045c610dc0565b6040516101649190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b3480156104b457600080fd5b50605861015a565b3480156104c857600080fd5b5061018d6104d7366004611ee2565b610e03565b60006104e86006610e41565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156105325750825b90506000826001600160401b0316600114801561054e5750303b155b90508115801561055c575080155b1561057a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105a457845460ff60401b1916600160401b1785555b6001600160a01b038c1615806105c157506001600160a01b038b16155b806105d357506001600160a01b038a16155b806105e557506001600160a01b038916155b806105f757506001600160a01b038816155b8061060957506001600160a01b038716155b1561062757604051639fabe1c160e01b815260040160405180910390fd5b6106308c610e60565b610638610e71565b610643600687610e79565b600180546001600160a01b03199081166001600160a01b038e8116919091179092556000805482168d84161790556002805482168b84161790556004805482168a841617905560038054909116918b1691909117905583156106df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6106fa8585858585610ee1565b6000805b8581101561084c57600087878381811061071a5761071a611f60565b905060a002018036038101906107309190611f76565b6040808201516000908152600a602052205490915060ff16156107535750610844565b6040818101516000908152600a602052818120805460ff191660011790556002546080840151925163d2b210a160e01b815263ffffffff909316600484015290916001600160a01b039091169063d2b210a190602401602060405180830381865afa1580156107c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ea9190611ffe565b905081606001518114610821578160600151604051630631b89b60e41b815260040161081891815260200190565b60405180910390fd5b8151602083015161083491600691611054565b8361083e8161202d565b94505050505b6001016106fe565b506004546001600160a01b031663f099f9f57fda5ef0dc178ac91b88a75e00c784aa6cda7295d02eebaec5c697f2b7ca57cdba336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101849052606401600060405180830381600087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b50505050505050505050565b826108f96006610e41565b1161091757604051635c6f5fd960e01b815260040160405180910390fd5b6000816001600160401b0381111561093157610931611dc7565b60405190808252806020026020018201604052801561098357816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161094f5790505b506005549091506000805b84811015610ac55760008686838181106109aa576109aa611f60565b90506020020160208101906109bf9190611ee2565b905060006109cf60068a8461111e565b9050806000036109e0575050610abd565b60006109ec8587612046565b60405164636c61696d60d81b6020820152602581019190915260450160408051601f1981840301815282825280516020918201206080840183526001600160a01b03871680855260019285019290925291830185905260608301829052909250610a5582611185565b7fdbe674c66915823ad8cb90cac7eb482e951adec0311c9cf091da19de527ee93583604051610a849190612059565b60405180910390a380888781518110610a9f57610a9f611f60565b60200260200101819052508580610ab59061202d565b965050505050505b60010161098e565b5080600003610ad657505050505050565b610ae08183612046565b6005556064811115610b0557604051635a8a34e560e01b815260040160405180910390fd5b6000816001600160401b03811115610b1f57610b1f611dc7565b604051908082528060200260200182016040528015610b7157816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610b3d5790505b50905060005b82811015610bbe57848181518110610b9157610b91611f60565b6020026020010151828281518110610bab57610bab611f60565b6020908102919091010152600101610b77565b5060408051600080825260208201909252639d6a54cb60e01b90610be790849060448101612093565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050610c24816111fd565b6004546001600160a01b031663f099f9f57fb5676ab224a46e60d2dabad66cec9aca97207e56cceb702167f49c074d12052c336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101869052606401600060405180830381600087803b158015610ca557600080fd5b505af11580156106df573d6000803e3d6000fd5b610cc1611279565b610cca8261131e565b610cd48282611326565b5050565b6000610ce26113e8565b506000805160206122f183398151915290565b610d206040518060800160405280600081526020016000815260200160008152602001600081525090565b610d2c60068484611431565b90505b92915050565b610d3d6114d5565b610d476000611530565b565b610d516114d5565b6001600160a01b038116610d7857604051639fabe1c160e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee32791a250565b610df96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6104e860066115a1565b610e0b6114d5565b6001600160a01b038116610e3557604051631e4fbdf760e01b815260006004820152602401610818565b610e3e81611530565b50565b6001810154815460009190610e56904261214d565b610d2f9190612160565b610e6861161f565b610e3e81611668565b610d4761161f565b80600003610e9a57604051630938939360e41b815260040160405180910390fd5b6001820181905562015180811115610ecc57610eb96201518042612160565b610ec69062015180612182565b82555050565b80610ed78142612160565b610ec69190612182565b610f4a83600001358686808060200260200160405190810160405280939291908181526020016000905b82821015610f3757610f2860a08302860136819003810190611f76565b81526020019060010190610f0b565b505050505061167090919063ffffffff16565b610f675760405163ec196f1360e01b815260040160405180910390fd5b33610f786040850160208601611ee2565b6001600160a01b031614610f9f576040516343c30a7760e01b815260040160405180910390fd5b6000546001600160a01b0316637e4f7a8a8383610fd1610fcc610fc7368a90038a018a612199565b6116cd565b611700565b6040518463ffffffff1660e01b8152600401610fef939291906121ee565b602060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190612269565b61104d57604051631f53b29360e01b815260040160405180910390fd5b5050505050565b600061105f84610e41565b9050600061106c83611778565b90508085600201600084815260200190815260200160002060008282546110939190612046565b9091555050600082815260038601602090815260408083206001600160a01b0388168452909152812080548392906110cc908490612046565b909155505060408051848152602081018390526001600160a01b0386169184917f8d0cf479602fd3cf00c7e5f661984c44659a827edb5f23cd85094cdc942f4649910160405180910390a35050505050565b600061112984610e41565b831061114857604051635c6f5fd960e01b815260040160405180910390fd5b60006111558585856117f5565b600085815260038701602090815260408083206001600160a01b03881684529091528120559150505b9392505050565b600081600001518260200151836040015184606001516040516020016111e0949392919060609490941b6001600160601b031916845260e09290921b6001600160e01b03191660148401526018830152603882015260580190565b604051602081830303815290604052805190602001209050919050565b600154600354604051635f7b157760e01b8152600092600019926001600160a01b0391821692635f7b157792869261124292911690839089908890339060040161228b565b6000604051808303818588803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b5050505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061130057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112f46000805160206122f1833981519152546001600160a01b031690565b6001600160a01b031614155b15610d475760405163703e46dd60e11b815260040160405180910390fd5b610e3e6114d5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611380575060408051601f3d908101601f1916820190925261137d91810190611ffe565b60015b6113a857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610818565b6000805160206122f183398151915281146113d957604051632a87526960e21b815260048101829052602401610818565b6113e38383611865565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d475760405163703e46dd60e11b815260040160405180910390fd5b61145c6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008381526002850160205260408120549061147886866118bb565b600086815260038801602090815260408083206001600160a01b03891684529091528120549192506114ab8888886117f5565b60408051608081018252958652602086019490945292840191909152506060820152949350505050565b336115077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610d475760405163118cdaa760e01b8152336004820152602401610818565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6115da6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805160c0810182528254815260019092015460208301526366b2e150908201526a076496d888478bcef00000606082015260076080820152601060a082015290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610d4757604051631afcd79f60e31b815260040160405180910390fd5b610e0b61161f565b600080805b84518110156116b157600085828151811061169257611692611f60565b602002602001015190506116a681846118f9565b925050600101611675565b508281146116c3576000915050610d2f565b5060019392505050565b6000816000015182602001516040516020016111e092919091825260601b6001600160601b031916602082015260340190565b604080516008808252610120820190925260609160009190602082016101008036833701905050905060005b600881101561177157611740816020612182565b84901b60e01c63ffffffff1682828151811061175e5761175e611f60565b602090810291909101015260010161172c565b5092915050565b60008167016345785d8a00000361179157506001919050565b81670de0b6b3a7640000036117a857506004919050565b81678ac7230489e80000036117bf57506009919050565b8168056bc75e2d63100000036117d757506010919050565b60405163fe9ba5cd60e01b815260040160405180910390fd5b919050565b600082815260028401602052604081205480820361181757600091505061117e565b600084815260038601602090815260408083206001600160a01b0387168452909152902054819061184887876118bb565b6118529190612182565b61185c9190612160565b95945050505050565b61186e82611985565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156118b3576113e382826119ea565b610cd4611a57565b6000806118d18460000154856001015485611a76565b9050620151808460010154826118e79190612182565b6118f19190612160565b949350505050565b600081836000015184602001518560400151866060015187608001516040516020016119679695949392919095865260609490941b6001600160601b031916602086015260348501929092526054840152607483015260e01b6001600160e01b031916609482015260980190565b60405160208183030381529060405280519060200120905092915050565b806001600160a01b03163b6000036119bb57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610818565b6000805160206122f183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611a0791906122d4565b600060405180830381855af49150503d8060008114611a42576040519150601f19603f3d011682016040523d82523d6000602084013e611a47565b606091505b509150915061185c858383611af9565b3415610d475760405163b398979f60e01b815260040160405180910390fd5b600080620151806366b2e150611a8c8686612182565b611a969088612046565b611aa0919061214d565b611aaa9190612160565b90506a076496d888478bcef0000060005b6007811015611aec576010811b80841015611adc578294505050505061117e565b90920391600191821c9101611abb565b5060009695505050505050565b606082611b0e57611b0982611b55565b61117e565b8151158015611b2557506001600160a01b0384163b155b15611b4e57604051639996b31560e01b81526001600160a01b0385166004820152602401610818565b508061117e565b805115611b655780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b03811681146117f057600080fd5b600080600080600080600060e0888a031215611bb057600080fd5b611bb988611b7e565b9650611bc760208901611b7e565b9550611bd560408901611b7e565b9450611be360608901611b7e565b9350611bf160808901611b7e565b9250611bff60a08901611b7e565b96999598509396929591949193505060c09091013590565b600060208284031215611c2957600080fd5b5035919050565b600060408284031215611c4257600080fd5b50919050565b60008083601f840112611c5a57600080fd5b5081356001600160401b03811115611c7157600080fd5b602083019150836020828501011115611c8957600080fd5b9250929050565b600080600080600060808688031215611ca857600080fd5b85356001600160401b03811115611cbe57600080fd5b8601601f81018813611ccf57600080fd5b80356001600160401b03811115611ce557600080fd5b88602060a083028401011115611cfa57600080fd5b602091820196509450611d109088908801611c30565b925060608601356001600160401b03811115611d2b57600080fd5b611d3788828901611c48565b969995985093965092949392505050565b600080600060408486031215611d5d57600080fd5b8335925060208401356001600160401b03811115611d7a57600080fd5b8401601f81018613611d8b57600080fd5b80356001600160401b03811115611da157600080fd5b8660208260051b8401011115611db657600080fd5b939660209190910195509293505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611e0557611e05611dc7565b604052919050565b60008060408385031215611e2057600080fd5b611e2983611b7e565b915060208301356001600160401b03811115611e4457600080fd5b8301601f81018513611e5557600080fd5b80356001600160401b03811115611e6e57611e6e611dc7565b611e81601f8201601f1916602001611ddd565b818152866020838501011115611e9657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060408385031215611ec957600080fd5b82359150611ed960208401611b7e565b90509250929050565b600060208284031215611ef457600080fd5b610d2c82611b7e565b60005b83811015611f18578181015183820152602001611f00565b50506000910152565b60008151808452611f39816020860160208601611efd565b601f01601f19169290920160200192915050565b602081526000610d2c6020830184611f21565b634e487b7160e01b600052603260045260246000fd5b600060a0828403128015611f8957600080fd5b5060405160009060a081016001600160401b0381118282101715611faf57611faf611dc7565b604052611fbb84611b7e565b8152602084810135908201526040808501359082015260608085013590820152608084013563ffffffff81168114611ff1578283fd5b6080820152949350505050565b60006020828403121561201057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161203f5761203f612017565b5060010190565b80820180821115610d2f57610d2f612017565b81516001600160a01b0316815260208083015163ffffffff1690820152604080830151908201526060808301519082015260808101610d2f565b6040808252835190820181905260009060208501906060840190835b81811015612105576120ef83855180516001600160a01b0316825260208082015163ffffffff169083015260408082015190830152606090810151910152565b60209390930192608092909201916001016120af565b50508381036020808601919091528551808352918101925085019060005b81811015612141578251845260209384019390920191600101612123565b50919695505050505050565b81810381811115610d2f57610d2f612017565b60008261217d57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d2f57610d2f612017565b600060408284031280156121ac57600080fd5b50604080519081016001600160401b03811182821017156121cf576121cf611dc7565b604052823581526121e260208401611b7e565b60208201529392505050565b60408152826040820152828460608301376000606084830101526000601f19601f8501168201606081016060848303016020850152808551808352608084019150602087019350600092505b8083101561225d578351825260208201915060208401935060018301925061223a565b50979650505050505050565b60006020828403121561227b57600080fd5b8151801515811461117e57600080fd5b60018060a01b038616815284602082015260a0604082015260006122b260a0830186611f21565b6060830194909452506001600160a01b03919091166080909101529392505050565b600082516122e6818460208701611efd565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220e6f266c95f4fbbcd2ca79a7801615346ffbf7ad98a609fbcb40917aba43770b764736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
