{
  "_format": "hh-sol-artifact-1",
  "contractName": "TaxStrategyRegistry",
  "sourceName": "contracts/tax/tax-strategy-registry/TaxStrategyRegistry.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidContractEntityInterface",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidTaxControllerInterface",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        }
      ],
      "name": "TaxStrategyIsAlreadyRegistered",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "provided",
          "type": "bytes4"
        },
        {
          "internalType": "bytes4",
          "name": "required",
          "type": "bytes4"
        }
      ],
      "name": "TaxStrategyMismatch",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        }
      ],
      "name": "UnregisteredTaxStrategy",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newController",
          "type": "address"
        }
      ],
      "name": "TaxStrategyControllerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "controller",
          "type": "address"
        }
      ],
      "name": "TaxStrategyRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        }
      ],
      "name": "checkRegisteredTaxStrategy",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contractKey",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IACL",
              "name": "acl",
              "type": "address"
            },
            {
              "internalType": "contract IMetahub",
              "name": "metahub",
              "type": "address"
            }
          ],
          "internalType": "struct TaxStrategyRegistry.TaxStrategyRegistryInitParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        }
      ],
      "name": "isRegisteredTaxStrategy",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "controller",
              "type": "address"
            }
          ],
          "internalType": "struct ITaxStrategyRegistry.TaxStrategyConfig",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "registerTaxStrategy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "controller",
          "type": "address"
        }
      ],
      "name": "setTaxController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        }
      ],
      "name": "taxController",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "taxStrategyId",
          "type": "bytes4"
        }
      ],
      "name": "taxStrategy",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "controller",
              "type": "address"
            }
          ],
          "internalType": "struct ITaxStrategyRegistry.TaxStrategyConfig",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "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": "0x60a06040523060805234801561001457600080fd5b50600054610100900460ff16158080156100355750600054600160ff909116105b80610060575061004e3061013660201b6109951760201c565b158015610060575060005460ff166001145b6100c75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156100ea576000805461ff0019166101001790555b8015610130576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50610145565b6001600160a01b03163b151590565b6080516113e461017c600039600081816102da0152818161031a015281816103b6015281816103f6015261048901526113e46000f3fe6080604052600436106100a75760003560e01c806396503fc81161006457806396503fc814610179578063b6a597dd14610199578063ba84a65f146101b9578063e641482c146101f1578063ec21896d14610211578063f842cc3c1461023357600080fd5b806301ffc9a7146100ac5780631d5ae17b146100e15780633659cfe6146101035780634f1ef2861461012357806352d1902d146101365780636572908f14610159575b600080fd5b3480156100b857600080fd5b506100cc6100c736600461103a565b61026b565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b506101016100fc36600461103a565b610296565b005b34801561010f57600080fd5b5061010161011e36600461106c565b6102d0565b61010161013136600461109f565b6103ac565b34801561014257600080fd5b5061014b61047c565b6040519081526020016100d8565b34801561016557600080fd5b506100cc61017436600461103a565b61052f565b34801561018557600080fd5b50610101610194366004611163565b610556565b3480156101a557600080fd5b506101016101b436600461119c565b610666565b3480156101c557600080fd5b506101d96101d436600461103a565b6107d4565b60405190516001600160a01b031681526020016100d8565b3480156101fd57600080fd5b5061010161020c3660046111b4565b610823565b34801561021d57600080fd5b5060405163cb8b0edf60e01b81526020016100d8565b34801561023f57600080fd5b5061025361024e36600461103a565b610962565b6040516001600160a01b0390911681526020016100d8565b60006001600160e01b03198216634aff6c7360e01b14806102905750610290826109a4565b92915050565b61029f8161052f565b6102cd5760405163db2d413f60e01b81526001600160e01b0319821660048201526024015b60405180910390fd5b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103185760405162461bcd60e51b81526004016102c4906111f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610361600080516020611368833981519152546001600160a01b031690565b6001600160a01b0316146103875760405162461bcd60e51b81526004016102c490611241565b610390816109d9565b604080516000808252602082019092526102cd91839190610a56565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103f45760405162461bcd60e51b81526004016102c4906111f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661043d600080516020611368833981519152546001600160a01b031690565b6001600160a01b0316146104635760405162461bcd60e51b81526004016102c490611241565b61046c826109d9565b61047882826001610a56565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461051c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016102c4565b5060008051602061136883398151915290565b6001600160e01b0319166000908152609960205260409020546001600160a01b0316151590565b6098546001600160a01b03166001600160a01b03166312d9a6ad7f060c8eced3c6b422fe5573c862b67b9f6e25a3fc7d9543b14f7aee77b138e70d336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156105d757600080fd5b505afa1580156105eb573d6000803e3d6000fd5b50505050816105f981610296565b6106038383610bc6565b6001600160e01b0319831660008181526099602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519092917f1cff7ee21b01101f07aab2dcca51769420628ae1a7e801c24e5cf8953d819c3791a3505050565b600054610100900460ff16158080156106865750600054600160ff909116105b806106a05750303b1580156106a0575060005460ff166001145b6107035760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c4565b6000805460ff191660011790558015610726576000805461ff0019166101001790555b61072e610ca4565b61073b602083018361106c565b609880546001600160a01b0319166001600160a01b039290921691909117905561076b604083016020840161106c565b606580546001600160a01b0319166001600160a01b03929092169190911790558015610478576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b604080516020810190915260008152816107ed81610296565b50506001600160e01b031916600090815260996020908152604091829020825191820190925290546001600160a01b0316815290565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561088557600080fd5b505afa158015610899573d6000803e3d6000fd5b506108b692508491506108b19050602084018461106c565b610bc6565b6108bf8261052f565b156108e95760405163c4c8489b60e01b81526001600160e01b0319831660048201526024016102c4565b6001600160e01b031982166000908152609960205260409020819061090e828261128d565b5061091e9050602082018261106c565b6001600160a01b0316826001600160e01b0319167fefac21ae72dcec653828e6339ef62aea000897e7c310f9d3f520fd9651a4c95460405160405180910390a35050565b60008161096e81610296565b50506001600160e01b0319166000908152609960205260409020546001600160a01b031690565b6001600160a01b03163b151590565b60006001600160e01b0319821663ec21896d60e01b148061029057506301ffc9a760e01b6001600160e01b0319831614610290565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610a3b57600080fd5b505afa158015610a4f573d6000803e3d6000fd5b5050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a8e57610a8983610d11565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ae8575060408051601f3d908101601f19168201909252610ae5918101906112b6565b60015b610b4b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016102c4565b6000805160206113688339815191528114610bba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016102c4565b50610a89838383610dad565b610be06001600160a01b038216639d4f2c7160e01b610dd8565b610bfd5760405163859bf0b560e01b815260040160405180910390fd5b6000816001600160a01b031663492f4e186040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906112cf565b90506001600160e01b031980821690841614610a895760405163bdf170b760e01b81526001600160e01b03198083166004830152841660248201526044016102c4565b600054610100900460ff16610d0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102c4565b565b6001600160a01b0381163b610d7e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102c4565b60008051602061136883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610db683610dfb565b600082511180610dc35750805b15610a8957610dd28383610e3b565b50505050565b6000610de383610f2f565b8015610df45750610df48383610f62565b9392505050565b610e0481610d11565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b610ea35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102c4565b600080846001600160a01b031684604051610ebe9190611318565b600060405180830381855af49150503d8060008114610ef9576040519150601f19603f3d011682016040523d82523d6000602084013e610efe565b606091505b5091509150610f26828260405180606001604052806027815260200161138860279139610feb565b95945050505050565b6000610f42826301ffc9a760e01b610f62565b80156102905750610f5b826001600160e01b0319610f62565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015610fd4575060208210155b8015610fe05750600081115b979650505050505050565b60608315610ffa575081610df4565b82511561100a5782518084602001fd5b8160405162461bcd60e51b81526004016102c49190611334565b6001600160e01b0319811681146102cd57600080fd5b60006020828403121561104c57600080fd5b8135610df481611024565b6001600160a01b03811681146102cd57600080fd5b60006020828403121561107e57600080fd5b8135610df481611057565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110b257600080fd5b82356110bd81611057565b9150602083013567ffffffffffffffff808211156110da57600080fd5b818501915085601f8301126110ee57600080fd5b81358181111561110057611100611089565b604051601f8201601f19908116603f0116810190838211818310171561112857611128611089565b8160405282815288602084870101111561114157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806040838503121561117657600080fd5b823561118181611024565b9150602083013561119181611057565b809150509250929050565b6000604082840312156111ae57600080fd5b50919050565b60008082840360408112156111c857600080fd5b83356111d381611024565b92506020601f19820112156111e757600080fd5b506020830190509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b813561129881611057565b81546001600160a01b0319166001600160a01b039190911617905550565b6000602082840312156112c857600080fd5b5051919050565b6000602082840312156112e157600080fd5b8151610df481611024565b60005b838110156113075781810151838201526020016112ef565b83811115610dd25750506000910152565b6000825161132a8184602087016112ec565b9190910192915050565b60208152600082518060208401526113538160408501602087016112ec565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208ff01a117d1acb6902ee458fdb570e003ec44c0a8ef3a5926d48f25c44b90b8564736f6c634300080d0033",
  "deployedBytecode": "0x6080604052600436106100a75760003560e01c806396503fc81161006457806396503fc814610179578063b6a597dd14610199578063ba84a65f146101b9578063e641482c146101f1578063ec21896d14610211578063f842cc3c1461023357600080fd5b806301ffc9a7146100ac5780631d5ae17b146100e15780633659cfe6146101035780634f1ef2861461012357806352d1902d146101365780636572908f14610159575b600080fd5b3480156100b857600080fd5b506100cc6100c736600461103a565b61026b565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b506101016100fc36600461103a565b610296565b005b34801561010f57600080fd5b5061010161011e36600461106c565b6102d0565b61010161013136600461109f565b6103ac565b34801561014257600080fd5b5061014b61047c565b6040519081526020016100d8565b34801561016557600080fd5b506100cc61017436600461103a565b61052f565b34801561018557600080fd5b50610101610194366004611163565b610556565b3480156101a557600080fd5b506101016101b436600461119c565b610666565b3480156101c557600080fd5b506101d96101d436600461103a565b6107d4565b60405190516001600160a01b031681526020016100d8565b3480156101fd57600080fd5b5061010161020c3660046111b4565b610823565b34801561021d57600080fd5b5060405163cb8b0edf60e01b81526020016100d8565b34801561023f57600080fd5b5061025361024e36600461103a565b610962565b6040516001600160a01b0390911681526020016100d8565b60006001600160e01b03198216634aff6c7360e01b14806102905750610290826109a4565b92915050565b61029f8161052f565b6102cd5760405163db2d413f60e01b81526001600160e01b0319821660048201526024015b60405180910390fd5b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103185760405162461bcd60e51b81526004016102c4906111f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610361600080516020611368833981519152546001600160a01b031690565b6001600160a01b0316146103875760405162461bcd60e51b81526004016102c490611241565b610390816109d9565b604080516000808252602082019092526102cd91839190610a56565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103f45760405162461bcd60e51b81526004016102c4906111f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661043d600080516020611368833981519152546001600160a01b031690565b6001600160a01b0316146104635760405162461bcd60e51b81526004016102c490611241565b61046c826109d9565b61047882826001610a56565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461051c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016102c4565b5060008051602061136883398151915290565b6001600160e01b0319166000908152609960205260409020546001600160a01b0316151590565b6098546001600160a01b03166001600160a01b03166312d9a6ad7f060c8eced3c6b422fe5573c862b67b9f6e25a3fc7d9543b14f7aee77b138e70d336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156105d757600080fd5b505afa1580156105eb573d6000803e3d6000fd5b50505050816105f981610296565b6106038383610bc6565b6001600160e01b0319831660008181526099602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519092917f1cff7ee21b01101f07aab2dcca51769420628ae1a7e801c24e5cf8953d819c3791a3505050565b600054610100900460ff16158080156106865750600054600160ff909116105b806106a05750303b1580156106a0575060005460ff166001145b6107035760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c4565b6000805460ff191660011790558015610726576000805461ff0019166101001790555b61072e610ca4565b61073b602083018361106c565b609880546001600160a01b0319166001600160a01b039290921691909117905561076b604083016020840161106c565b606580546001600160a01b0319166001600160a01b03929092169190911790558015610478576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b604080516020810190915260008152816107ed81610296565b50506001600160e01b031916600090815260996020908152604091829020825191820190925290546001600160a01b0316815290565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561088557600080fd5b505afa158015610899573d6000803e3d6000fd5b506108b692508491506108b19050602084018461106c565b610bc6565b6108bf8261052f565b156108e95760405163c4c8489b60e01b81526001600160e01b0319831660048201526024016102c4565b6001600160e01b031982166000908152609960205260409020819061090e828261128d565b5061091e9050602082018261106c565b6001600160a01b0316826001600160e01b0319167fefac21ae72dcec653828e6339ef62aea000897e7c310f9d3f520fd9651a4c95460405160405180910390a35050565b60008161096e81610296565b50506001600160e01b0319166000908152609960205260409020546001600160a01b031690565b6001600160a01b03163b151590565b60006001600160e01b0319821663ec21896d60e01b148061029057506301ffc9a760e01b6001600160e01b0319831614610290565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610a3b57600080fd5b505afa158015610a4f573d6000803e3d6000fd5b5050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a8e57610a8983610d11565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ae8575060408051601f3d908101601f19168201909252610ae5918101906112b6565b60015b610b4b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016102c4565b6000805160206113688339815191528114610bba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016102c4565b50610a89838383610dad565b610be06001600160a01b038216639d4f2c7160e01b610dd8565b610bfd5760405163859bf0b560e01b815260040160405180910390fd5b6000816001600160a01b031663492f4e186040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906112cf565b90506001600160e01b031980821690841614610a895760405163bdf170b760e01b81526001600160e01b03198083166004830152841660248201526044016102c4565b600054610100900460ff16610d0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102c4565b565b6001600160a01b0381163b610d7e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102c4565b60008051602061136883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610db683610dfb565b600082511180610dc35750805b15610a8957610dd28383610e3b565b50505050565b6000610de383610f2f565b8015610df45750610df48383610f62565b9392505050565b610e0481610d11565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b610ea35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102c4565b600080846001600160a01b031684604051610ebe9190611318565b600060405180830381855af49150503d8060008114610ef9576040519150601f19603f3d011682016040523d82523d6000602084013e610efe565b606091505b5091509150610f26828260405180606001604052806027815260200161138860279139610feb565b95945050505050565b6000610f42826301ffc9a760e01b610f62565b80156102905750610f5b826001600160e01b0319610f62565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015610fd4575060208210155b8015610fe05750600081115b979650505050505050565b60608315610ffa575081610df4565b82511561100a5782518084602001fd5b8160405162461bcd60e51b81526004016102c49190611334565b6001600160e01b0319811681146102cd57600080fd5b60006020828403121561104c57600080fd5b8135610df481611024565b6001600160a01b03811681146102cd57600080fd5b60006020828403121561107e57600080fd5b8135610df481611057565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110b257600080fd5b82356110bd81611057565b9150602083013567ffffffffffffffff808211156110da57600080fd5b818501915085601f8301126110ee57600080fd5b81358181111561110057611100611089565b604051601f8201601f19908116603f0116810190838211818310171561112857611128611089565b8160405282815288602084870101111561114157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806040838503121561117657600080fd5b823561118181611024565b9150602083013561119181611057565b809150509250929050565b6000604082840312156111ae57600080fd5b50919050565b60008082840360408112156111c857600080fd5b83356111d381611024565b92506020601f19820112156111e757600080fd5b506020830190509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b813561129881611057565b81546001600160a01b0319166001600160a01b039190911617905550565b6000602082840312156112c857600080fd5b5051919050565b6000602082840312156112e157600080fd5b8151610df481611024565b60005b838110156113075781810151838201526020016112ef565b83811115610dd25750506000910152565b6000825161132a8184602087016112ec565b9190910192915050565b60208152600082518060208401526113538160408501602087016112ec565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208ff01a117d1acb6902ee458fdb570e003ec44c0a8ef3a5926d48f25c44b90b8564736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
