{
  "_format": "hh-sol-artifact-1",
  "contractName": "TREXFactory",
  "sourceName": "contracts/factory/TREXFactory.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementationAuthority_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "idFactory_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "Deployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_idFactory",
          "type": "address"
        }
      ],
      "name": "IdFactorySet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_implementationAuthority",
          "type": "address"
        }
      ],
      "name": "ImplementationAuthoritySet",
      "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": "_token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_ir",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_irs",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_tir",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_ctr",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_mc",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "string",
          "name": "_salt",
          "type": "string"
        }
      ],
      "name": "TREXSuiteDeployed",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_salt",
          "type": "string"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "uint8",
              "name": "decimals",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "irs",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "ONCHAINID",
              "type": "address"
            },
            {
              "internalType": "address[]",
              "name": "irAgents",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "tokenAgents",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "complianceModules",
              "type": "address[]"
            },
            {
              "internalType": "bytes[]",
              "name": "complianceSettings",
              "type": "bytes[]"
            }
          ],
          "internalType": "struct ITREXFactory.TokenDetails",
          "name": "_tokenDetails",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256[]",
              "name": "claimTopics",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "issuers",
              "type": "address[]"
            },
            {
              "internalType": "uint256[][]",
              "name": "issuerClaims",
              "type": "uint256[][]"
            }
          ],
          "internalType": "struct ITREXFactory.ClaimDetails",
          "name": "_claimDetails",
          "type": "tuple"
        }
      ],
      "name": "deployTREXSuite",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIdFactory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getImplementationAuthority",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_salt",
          "type": "string"
        }
      ],
      "name": "getToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_contract",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "recoverContractOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "idFactory_",
          "type": "address"
        }
      ],
      "name": "setIdFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementationAuthority_",
          "type": "address"
        }
      ],
      "name": "setImplementationAuthority",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "tokenDeployed",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162006225380380620062258339810160408190526200003491620005f1565b6200003f336200005d565b6200004a82620000ad565b6200005581620004c5565b50506200064e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000b762000576565b6001600160a01b038116620001135760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200015d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000183919062000629565b6001600160a01b03161415801562000212575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000206919062000629565b6001600160a01b031614155b801562000296575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000629565b6001600160a01b031614155b80156200031a575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030e919062000629565b6001600160a01b031614155b80156200039e575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000392919062000629565b6001600160a01b031614155b801562000422575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000416919062000629565b6001600160a01b031614155b620004705760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016200010a565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b8906020015b60405180910390a150565b620004cf62000576565b6001600160a01b038116620005275760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016200010a565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fae81f4fee1b2d830e39ae449967642aaa0e5a1771aa200d0a50853010992242c90602001620004ba565b6000546001600160a01b03163314620005d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200010a565b565b80516001600160a01b0381168114620005ec57600080fd5b919050565b600080604083850312156200060557600080fd5b6200061083620005d4565b91506200062060208401620005d4565b90509250929050565b6000602082840312156200063c57600080fd5b6200064782620005d4565b9392505050565b615bc7806200065e6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b75760003560e01c806392dd9d65116200007a57806392dd9d65146200012c578063c1733f681462000143578063ccd41cce146200015a578063cf753d371462000171578063f2fde38b1462000188578063fb88d79c146200019f57600080fd5b80632d5f118714620000bc57806350b0183814620000e55780635f2773a514620000fe578063715018a614620001105780638da5cb5b146200011a575b600080fd5b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b620000fc620000f636600462001b50565b620001d6565b005b6002546001600160a01b0316620000c9565b620000fc62000241565b6000546001600160a01b0316620000c9565b620000fc6200013d36600462001b8e565b62000259565b620000c96200015436600462001bb5565b62000671565b620000fc6200016b36600462001b8e565b620006a8565b620000fc6200018236600462001cd7565b62000759565b620000fc6200019936600462001b8e565b6200171d565b620000c9620001b036600462001d77565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b620001e06200179c565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b1580156200022457600080fd5b505af115801562000239573d6000803e3d6000fd5b505050505050565b6200024b6200179c565b620002576000620017f8565b565b620002636200179c565b6001600160a01b038116620002bf5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062001db8565b6001600160a01b031614158015620003be575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062001db8565b6001600160a01b031614155b801562000442575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062001db8565b6001600160a01b031614155b8015620004c6575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000494573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ba919062001db8565b6001600160a01b031614155b80156200054a575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000518573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053e919062001db8565b6001600160a01b031614155b8015620005ce575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c2919062001db8565b6001600160a01b031614155b6200061c5760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f726974796044820152606401620002b6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b8906020015b60405180910390a150565b6000600383836040516200068792919062001dd8565b908152604051908190036020019020546001600160a01b0316905092915050565b620006b26200179c565b6001600160a01b0381166200070a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f2061646472657373006044820152606401620002b6565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fae81f4fee1b2d830e39ae449967642aaa0e5a1771aa200d0a50853010992242c9060200162000666565b620007636200179c565b60006001600160a01b031660038460405162000780919062001e0e565b908152604051908190036020019020546001600160a01b031614620007e15760405162461bcd60e51b81526020600482015260166024820152751d1bdad95b88185b1c9958591e4819195c1b1bde595960521b6044820152606401620002b6565b620007f0604082018262001e2c565b905062000801602083018362001e2c565b905014620008525760405162461bcd60e51b815260206004820152601760248201527f636c61696d207061747465726e206e6f742076616c69640000000000000000006044820152606401620002b6565b600562000863602083018362001e2c565b90501115620008bf5760405162461bcd60e51b815260206004820152602160248201527f6d6178203520636c61696d2069737375657273206174206465706c6f796d656e6044820152601d60fa1b6064820152608401620002b6565b6005620008cd828062001e2c565b905011156200091f5760405162461bcd60e51b815260206004820181905260248201527f6d6178203520636c61696d20746f70696373206174206465706c6f796d656e746044820152606401620002b6565b60056200093060c084018462001e2c565b90501115801562000952575060056200094d60e084018462001e2c565b905011155b620009a05760405162461bcd60e51b815260206004820152601a60248201527f6d61782035206167656e7473206174206465706c6f796d656e740000000000006044820152606401620002b6565b601e620009b261010084018462001e2c565b9050111562000a105760405162461bcd60e51b815260206004820152602360248201527f6d6178203330206d6f64756c6520616374696f6e73206174206465706c6f796d604482015262195b9d60ea1b6064820152608401620002b6565b62000a2061012083018362001e2c565b905062000a3261010084018462001e2c565b9050101562000a845760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420636f6d706c69616e6365207061747465726e0000000000006044820152606401620002b6565b60015460009062000aa09085906001600160a01b031662001848565b60015490915060009062000abf9086906001600160a01b0316620018d7565b60015490915060009062000ade9087906001600160a01b0316620018ec565b905060008062000af560a088016080890162001b8e565b6001600160a01b03160362000b255760015462000b1d9088906001600160a01b031662001901565b905062000b3a565b62000b3760a087016080880162001b8e565b90505b60015460009062000b599089906001600160a01b031687878662001916565b60015490915060009062000c4b908a906001600160a01b0316848762000b8360208e018e62001e80565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d806040019062000bd8919062001e80565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e606001602081019062000c30919062001eca565b8f60a001602081019062000c45919062001b8e565b620019bd565b9050600062000c6160c08a0160a08b0162001b8e565b6001600160a01b03160362000d5e576002546000906001600160a01b0316633d56ff668362000c9460208d018d62001b8e565b8d6040518463ffffffff1660e01b815260040162000cb59392919062001f1d565b6020604051808303816000875af115801562000cd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cfb919062001db8565b604051633d1ddc5b60e01b81526001600160a01b03808316600483015291925090831690633d1ddc5b90602401600060405180830381600087803b15801562000d4357600080fd5b505af115801562000d58573d6000803e3d6000fd5b50505050505b60005b62000d6d888062001e2c565b905081101562000e15576001600160a01b03861663c7b2255162000d928a8062001e2c565b8481811062000da55762000da562001f54565b905060200201356040518263ffffffff1660e01b815260040162000dcb91815260200190565b600060405180830381600087803b15801562000de657600080fd5b505af115801562000dfb573d6000803e3d6000fd5b50505050808062000e0c9062001f6a565b91505062000d61565b5060005b62000e28602089018962001e2c565b905081101562000f1a576001600160a01b038716639f63ea9862000e5060208b018b62001e2c565b8481811062000e635762000e6362001f54565b905060200201602081019062000e7a919062001b8e565b62000e8960408c018c62001e2c565b8581811062000e9c5762000e9c62001f54565b905060200281019062000eb0919062001e2c565b6040518463ffffffff1660e01b815260040162000ed09392919062001f92565b600060405180830381600087803b15801562000eeb57600080fd5b505af115801562000f00573d6000803e3d6000fd5b50505050808062000f119062001f6a565b91505062000e19565b5060405163690a49f960e01b81526001600160a01b03838116600483015284169063690a49f990602401600060405180830381600087803b15801562000f5f57600080fd5b505af115801562000f74573d6000803e3d6000fd5b5050604051634273cc2160e11b81526001600160a01b038481166004830152851692506384e798429150602401600060405180830381600087803b15801562000fbc57600080fd5b505af115801562000fd1573d6000803e3d6000fd5b5050505060005b62000fe760c08a018a62001e2c565b9050811015620010aa576001600160a01b0383166384e798426200100f60c08c018c62001e2c565b8481811062001022576200102262001f54565b905060200201602081019062001039919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200107b57600080fd5b505af115801562001090573d6000803e3d6000fd5b505050508080620010a19062001f6a565b91505062000fd8565b5060005b620010bd60e08a018a62001e2c565b905081101562001180576001600160a01b0382166384e79842620010e560e08c018c62001e2c565b84818110620010f857620010f862001f54565b90506020020160208101906200110f919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200115157600080fd5b505af115801562001166573d6000803e3d6000fd5b505050508080620011779062001f6a565b915050620010ae565b5060005b620011946101008a018a62001e2c565b905081101562001400576001600160a01b03851663a446d49f620011bd6101008c018c62001e2c565b84818110620011d057620011d062001f54565b9050602002016020810190620011e7919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156200122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001252919062001fdd565b620012fc576001600160a01b038516631ed86f19620012766101008c018c62001e2c565b8481811062001289576200128962001f54565b9050602002016020810190620012a0919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620012e257600080fd5b505af1158015620012f7573d6000803e3d6000fd5b505050505b6200130c6101208a018a62001e2c565b9050811015620013eb576001600160a01b03851663efb22d33620013356101208c018c62001e2c565b8481811062001348576200134862001f54565b90506020028101906200135c919062001e80565b6200136c6101008e018e62001e2c565b868181106200137f576200137f62001f54565b905060200201602081019062001396919062001b8e565b6040518463ffffffff1660e01b8152600401620013b69392919062002001565b600060405180830381600087803b158015620013d157600080fd5b505af1158015620013e6573d6000803e3d6000fd5b505050505b80620013f78162001f6a565b91505062001184565b508060038a60405162001414919062001e0e565b9081526040516020918190038201902080546001600160a01b0319166001600160a01b039384161790559082169063f2fde38b9062001456908b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200149857600080fd5b505af1158015620014ad573d6000803e3d6000fd5b5050506001600160a01b038316905063f2fde38b620014d060208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200151257600080fd5b505af115801562001527573d6000803e3d6000fd5b5050506001600160a01b038716905063f2fde38b6200154a60208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200158c57600080fd5b505af1158015620015a1573d6000803e3d6000fd5b5050506001600160a01b038616905063f2fde38b620015c460208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200160657600080fd5b505af11580156200161b573d6000803e3d6000fd5b5050506001600160a01b038516905063f2fde38b6200163e60208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200168057600080fd5b505af115801562001695573d6000803e3d6000fd5b5050505088604051620016a9919062001e0e565b604080519182900382206001600160a01b0385811684528681166020850152898116848401528881166060850152878116608085015291519092918416917f057adae5fa3e9caa8a0d584edff60f61558d33f073412ec2d66d558b739e0a41919081900360a00190a3505050505050505050565b620017276200179c565b6001600160a01b0381166200178e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620002b6565b6200179981620017f8565b50565b6000546001600160a01b03163314620002575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604051806020016200185d9062001ae6565b601f1982820381018352601f9091011660408181526001600160a01b038616602083015291925060009101604051602081830303815290604052905060008282604051602001620018b092919062002042565b6040516020818303038152906040529050620018cd868262001a5e565b9695505050505050565b600080604051806020016200185d9062001af4565b600080604051806020016200185d9062001b02565b600080604051806020016200185d9062001b10565b600080604051806020016200192b9062001b1e565b601f1982820381018352601f9091011660408181526001600160a01b03898116602084015288811682840152878116606084015286166080808401919091528151808403909101815260a0830190915291925060009062001993908490849060c00162002042565b6040516020818303038152906040529050620019b0898262001a5e565b9998505050505050505050565b60008060405180602001620019d29062001b2c565b6020820181038252601f19601f82011660405250905060008989898989898960405160200162001a09979695949392919062002075565b60405160208183030381529060405290506000828260405160200162001a3192919062002042565b604051602081830303815290604052905062001a4e8c8262001a5e565b9c9b505050505050505050505050565b6000808360405160200162001a74919062001e0e565b60405160208183030381529060405280519060200120905060008360200184518381836000f592505050803b62001aaa57600080fd5b6040516001600160a01b038216907ff40fcec21964ffb566044d083b4073f29f7f7929110ea19e1b3ebe375d89055e90600090a2949350505050565b6108fc80620020de83390190565b6108fc80620029da83390190565b6108fc80620032d683390190565b6108fc8062003bd283390190565b6109bf80620044ce83390190565b610d058062004e8d83390190565b6001600160a01b03811681146200179957600080fd5b6000806040838503121562001b6457600080fd5b823562001b718162001b3a565b9150602083013562001b838162001b3a565b809150509250929050565b60006020828403121562001ba157600080fd5b813562001bae8162001b3a565b9392505050565b6000806020838503121562001bc957600080fd5b823567ffffffffffffffff8082111562001be257600080fd5b818501915085601f83011262001bf757600080fd5b81358181111562001c0757600080fd5b86602082850101111562001c1a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011262001c5457600080fd5b813567ffffffffffffffff8082111562001c725762001c7262001c2c565b604051601f8301601f19908116603f0116810190828211818310171562001c9d5762001c9d62001c2c565b8160405283815286602085880101111562001cb757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121562001ced57600080fd5b833567ffffffffffffffff8082111562001d0657600080fd5b62001d148783880162001c42565b9450602086013591508082111562001d2b57600080fd5b90850190610140828803121562001d4157600080fd5b9092506040850135908082111562001d5857600080fd5b5084016060818703121562001d6c57600080fd5b809150509250925092565b60006020828403121562001d8a57600080fd5b813567ffffffffffffffff81111562001da257600080fd5b62001db08482850162001c42565b949350505050565b60006020828403121562001dcb57600080fd5b815162001bae8162001b3a565b8183823760009101908152919050565b60005b8381101562001e0557818101518382015260200162001deb565b50506000910152565b6000825162001e2281846020870162001de8565b9190910192915050565b6000808335601e1984360301811262001e4457600080fd5b83018035915067ffffffffffffffff82111562001e6057600080fd5b6020019150600581901b360382131562001e7957600080fd5b9250929050565b6000808335601e1984360301811262001e9857600080fd5b83018035915067ffffffffffffffff82111562001eb457600080fd5b60200191503681900382131562001e7957600080fd5b60006020828403121562001edd57600080fd5b813560ff8116811462001bae57600080fd5b6000815180845262001f0981602086016020860162001de8565b601f01601f19169290920160200192915050565b6001600160a01b0384811682528316602082015260606040820181905260009062001f4b9083018462001eef565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162001f8b57634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111562001fc357600080fd5b8260051b8085606085013791909101606001949350505050565b60006020828403121562001ff057600080fd5b8151801515811462001bae57600080fd5b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b600083516200205681846020880162001de8565b8351908301906200206c81836020880162001de8565b01949350505050565b600060018060a01b03808a1683528089166020840152808816604084015260e06060840152620020a960e084018862001eef565b8381036080850152620020bd818862001eef565b60ff9690961660a0850152509290921660c090910152509594505050505056fe608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca2646970667358221220767f7f15fa2b79a36f47d1631fcda09983190295b6f739a847f30526b8d99f8764736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca2646970667358221220d7fa6a09698043502b95c0e41086ad50abab8e20c278aa6e9bf05f35c381271164736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212204d462243229c9a4f618b5e78ede4cb8a6c05379da46b06c214fd635ea233982864736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca264697066735822122046bd1e737bc572483b8a12ccf53828ce86d1ebbff39dcf3d08a7cc5d0611553464736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516109bf3803806109bf83398101604081905261002f916102a7565b6001600160a01b0384161580159061004f57506001600160a01b03831615155b801561006357506001600160a01b03821615155b801561007757506001600160a01b03811615155b6100c85760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100de8460008051602061099f83398151915255565b6040516001600160a01b038516907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a2600061012a60008051602061099f8339815191525490565b6001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b91906102fb565b6040516001600160a01b0386811660248301528581166044830152848116606483015291925060009183169060840160408051601f198184030181529181526020820180516001600160e01b031663184b955960e01b179052516101ef919061031d565b600060405180830381855af49150503d806000811461022a576040519150601f19603f3d011682016040523d82523d6000602084013e61022f565b606091505b50509050806102805760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e0000000000000000000060448201526064016100bf565b50505050505061034c565b80516001600160a01b03811681146102a257600080fd5b919050565b600080600080608085870312156102bd57600080fd5b6102c68561028b565b93506102d46020860161028b565b92506102e26040860161028b565b91506102f06060860161028b565b905092959194509250565b60006020828403121561030d57600080fd5b6103168261028b565b9392505050565b6000825160005b8181101561033e5760208186018101518583015201610324565b506000920191825250919050565b6106448061035b6000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212205b0bbfbf5bae650e4abb441a8a5f1e0406d33c46efd18dffab4ab0d97abf3f4364736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc60806040523480156200001157600080fd5b5060405162000d0538038062000d058339810160408190526200003491620004dd565b6001600160a01b038716158015906200005557506001600160a01b03861615155b80156200006a57506001600160a01b03851615155b620000bc5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b604051602001620000d890602080825260009082015260400190565b6040516020818303038152906040528051906020012084604051602001620001019190620005da565b60405160208183030381529060405280519060200120141580156200017f57506040516020016200013d90602080825260009082015260400190565b6040516020818303038152906040528051906020012083604051602001620001669190620005da565b6040516020818303038152906040528051906020012014155b620001cd5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d20656d70747920737472696e67006044820152606401620000b3565b60128260ff161115620002235760405162461bcd60e51b815260206004820152601960248201527f646563696d616c73206265747765656e203020616e64203138000000000000006044820152606401620000b3565b6200023b8760008051602062000ce583398151915255565b6040516001600160a01b038816907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006200028960008051602062000ce58339815191525490565b6001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed9190620005f6565b90506000816001600160a01b0316888888888888604051602401620003189695949392919062000614565b60408051601f198184030181529181526020820180516001600160e01b0316633e46d86760e21b179052516200034f919062000673565b600060405180830381855af49150503d80600081146200038c576040519150601f19603f3d011682016040523d82523d6000602084013e62000391565b606091505b5050905080620003e45760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401620000b3565b50505050505050505062000691565b80516001600160a01b03811681146200040b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200044357818101518382015260200162000429565b50506000910152565b600082601f8301126200045e57600080fd5b81516001600160401b03808211156200047b576200047b62000410565b604051601f8301601f19908116603f01168101908282118183101715620004a657620004a662000410565b81604052838152866020858801011115620004c057600080fd5b620004d384602083016020890162000426565b9695505050505050565b600080600080600080600060e0888a031215620004f957600080fd5b6200050488620003f3565b96506200051460208901620003f3565b95506200052460408901620003f3565b60608901519095506001600160401b03808211156200054257600080fd5b620005508b838c016200044c565b955060808a01519150808211156200056757600080fd5b50620005768a828b016200044c565b93505060a088015160ff811681146200058e57600080fd5b91506200059e60c08901620003f3565b905092959891949750929550565b60008151808452620005c681602086016020860162000426565b601f01601f19169290920160200192915050565b602081526000620005ef6020830184620005ac565b9392505050565b6000602082840312156200060957600080fd5b620005ef82620003f3565b600060018060a01b038089168352808816602084015260c060408401526200064060c0840188620005ac565b8381036060850152620006548188620005ac565b60ff969096166080850152509290921660a09091015250949350505050565b600082516200068781846020870162000426565b9190910192915050565b61064480620006a16000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212207b444bee130348fa6d075656698ddec57b7a49ccf7c520b62b5093a3b517441964736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212202d3b037314af505de8a28dafb142a240fd612e2add217d78d2d91c768bf0e0ca64736f6c63430008110033",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000b75760003560e01c806392dd9d65116200007a57806392dd9d65146200012c578063c1733f681462000143578063ccd41cce146200015a578063cf753d371462000171578063f2fde38b1462000188578063fb88d79c146200019f57600080fd5b80632d5f118714620000bc57806350b0183814620000e55780635f2773a514620000fe578063715018a614620001105780638da5cb5b146200011a575b600080fd5b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b620000fc620000f636600462001b50565b620001d6565b005b6002546001600160a01b0316620000c9565b620000fc62000241565b6000546001600160a01b0316620000c9565b620000fc6200013d36600462001b8e565b62000259565b620000c96200015436600462001bb5565b62000671565b620000fc6200016b36600462001b8e565b620006a8565b620000fc6200018236600462001cd7565b62000759565b620000fc6200019936600462001b8e565b6200171d565b620000c9620001b036600462001d77565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b620001e06200179c565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b1580156200022457600080fd5b505af115801562000239573d6000803e3d6000fd5b505050505050565b6200024b6200179c565b620002576000620017f8565b565b620002636200179c565b6001600160a01b038116620002bf5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062001db8565b6001600160a01b031614158015620003be575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062001db8565b6001600160a01b031614155b801562000442575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062001db8565b6001600160a01b031614155b8015620004c6575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000494573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ba919062001db8565b6001600160a01b031614155b80156200054a575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000518573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053e919062001db8565b6001600160a01b031614155b8015620005ce575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c2919062001db8565b6001600160a01b031614155b6200061c5760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f726974796044820152606401620002b6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b8906020015b60405180910390a150565b6000600383836040516200068792919062001dd8565b908152604051908190036020019020546001600160a01b0316905092915050565b620006b26200179c565b6001600160a01b0381166200070a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f2061646472657373006044820152606401620002b6565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fae81f4fee1b2d830e39ae449967642aaa0e5a1771aa200d0a50853010992242c9060200162000666565b620007636200179c565b60006001600160a01b031660038460405162000780919062001e0e565b908152604051908190036020019020546001600160a01b031614620007e15760405162461bcd60e51b81526020600482015260166024820152751d1bdad95b88185b1c9958591e4819195c1b1bde595960521b6044820152606401620002b6565b620007f0604082018262001e2c565b905062000801602083018362001e2c565b905014620008525760405162461bcd60e51b815260206004820152601760248201527f636c61696d207061747465726e206e6f742076616c69640000000000000000006044820152606401620002b6565b600562000863602083018362001e2c565b90501115620008bf5760405162461bcd60e51b815260206004820152602160248201527f6d6178203520636c61696d2069737375657273206174206465706c6f796d656e6044820152601d60fa1b6064820152608401620002b6565b6005620008cd828062001e2c565b905011156200091f5760405162461bcd60e51b815260206004820181905260248201527f6d6178203520636c61696d20746f70696373206174206465706c6f796d656e746044820152606401620002b6565b60056200093060c084018462001e2c565b90501115801562000952575060056200094d60e084018462001e2c565b905011155b620009a05760405162461bcd60e51b815260206004820152601a60248201527f6d61782035206167656e7473206174206465706c6f796d656e740000000000006044820152606401620002b6565b601e620009b261010084018462001e2c565b9050111562000a105760405162461bcd60e51b815260206004820152602360248201527f6d6178203330206d6f64756c6520616374696f6e73206174206465706c6f796d604482015262195b9d60ea1b6064820152608401620002b6565b62000a2061012083018362001e2c565b905062000a3261010084018462001e2c565b9050101562000a845760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420636f6d706c69616e6365207061747465726e0000000000006044820152606401620002b6565b60015460009062000aa09085906001600160a01b031662001848565b60015490915060009062000abf9086906001600160a01b0316620018d7565b60015490915060009062000ade9087906001600160a01b0316620018ec565b905060008062000af560a088016080890162001b8e565b6001600160a01b03160362000b255760015462000b1d9088906001600160a01b031662001901565b905062000b3a565b62000b3760a087016080880162001b8e565b90505b60015460009062000b599089906001600160a01b031687878662001916565b60015490915060009062000c4b908a906001600160a01b0316848762000b8360208e018e62001e80565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d806040019062000bd8919062001e80565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e606001602081019062000c30919062001eca565b8f60a001602081019062000c45919062001b8e565b620019bd565b9050600062000c6160c08a0160a08b0162001b8e565b6001600160a01b03160362000d5e576002546000906001600160a01b0316633d56ff668362000c9460208d018d62001b8e565b8d6040518463ffffffff1660e01b815260040162000cb59392919062001f1d565b6020604051808303816000875af115801562000cd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cfb919062001db8565b604051633d1ddc5b60e01b81526001600160a01b03808316600483015291925090831690633d1ddc5b90602401600060405180830381600087803b15801562000d4357600080fd5b505af115801562000d58573d6000803e3d6000fd5b50505050505b60005b62000d6d888062001e2c565b905081101562000e15576001600160a01b03861663c7b2255162000d928a8062001e2c565b8481811062000da55762000da562001f54565b905060200201356040518263ffffffff1660e01b815260040162000dcb91815260200190565b600060405180830381600087803b15801562000de657600080fd5b505af115801562000dfb573d6000803e3d6000fd5b50505050808062000e0c9062001f6a565b91505062000d61565b5060005b62000e28602089018962001e2c565b905081101562000f1a576001600160a01b038716639f63ea9862000e5060208b018b62001e2c565b8481811062000e635762000e6362001f54565b905060200201602081019062000e7a919062001b8e565b62000e8960408c018c62001e2c565b8581811062000e9c5762000e9c62001f54565b905060200281019062000eb0919062001e2c565b6040518463ffffffff1660e01b815260040162000ed09392919062001f92565b600060405180830381600087803b15801562000eeb57600080fd5b505af115801562000f00573d6000803e3d6000fd5b50505050808062000f119062001f6a565b91505062000e19565b5060405163690a49f960e01b81526001600160a01b03838116600483015284169063690a49f990602401600060405180830381600087803b15801562000f5f57600080fd5b505af115801562000f74573d6000803e3d6000fd5b5050604051634273cc2160e11b81526001600160a01b038481166004830152851692506384e798429150602401600060405180830381600087803b15801562000fbc57600080fd5b505af115801562000fd1573d6000803e3d6000fd5b5050505060005b62000fe760c08a018a62001e2c565b9050811015620010aa576001600160a01b0383166384e798426200100f60c08c018c62001e2c565b8481811062001022576200102262001f54565b905060200201602081019062001039919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200107b57600080fd5b505af115801562001090573d6000803e3d6000fd5b505050508080620010a19062001f6a565b91505062000fd8565b5060005b620010bd60e08a018a62001e2c565b905081101562001180576001600160a01b0382166384e79842620010e560e08c018c62001e2c565b84818110620010f857620010f862001f54565b90506020020160208101906200110f919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200115157600080fd5b505af115801562001166573d6000803e3d6000fd5b505050508080620011779062001f6a565b915050620010ae565b5060005b620011946101008a018a62001e2c565b905081101562001400576001600160a01b03851663a446d49f620011bd6101008c018c62001e2c565b84818110620011d057620011d062001f54565b9050602002016020810190620011e7919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156200122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001252919062001fdd565b620012fc576001600160a01b038516631ed86f19620012766101008c018c62001e2c565b8481811062001289576200128962001f54565b9050602002016020810190620012a0919062001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620012e257600080fd5b505af1158015620012f7573d6000803e3d6000fd5b505050505b6200130c6101208a018a62001e2c565b9050811015620013eb576001600160a01b03851663efb22d33620013356101208c018c62001e2c565b8481811062001348576200134862001f54565b90506020028101906200135c919062001e80565b6200136c6101008e018e62001e2c565b868181106200137f576200137f62001f54565b905060200201602081019062001396919062001b8e565b6040518463ffffffff1660e01b8152600401620013b69392919062002001565b600060405180830381600087803b158015620013d157600080fd5b505af1158015620013e6573d6000803e3d6000fd5b505050505b80620013f78162001f6a565b91505062001184565b508060038a60405162001414919062001e0e565b9081526040516020918190038201902080546001600160a01b0319166001600160a01b039384161790559082169063f2fde38b9062001456908b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200149857600080fd5b505af1158015620014ad573d6000803e3d6000fd5b5050506001600160a01b038316905063f2fde38b620014d060208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200151257600080fd5b505af115801562001527573d6000803e3d6000fd5b5050506001600160a01b038716905063f2fde38b6200154a60208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200158c57600080fd5b505af1158015620015a1573d6000803e3d6000fd5b5050506001600160a01b038616905063f2fde38b620015c460208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200160657600080fd5b505af11580156200161b573d6000803e3d6000fd5b5050506001600160a01b038516905063f2fde38b6200163e60208b018b62001b8e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200168057600080fd5b505af115801562001695573d6000803e3d6000fd5b5050505088604051620016a9919062001e0e565b604080519182900382206001600160a01b0385811684528681166020850152898116848401528881166060850152878116608085015291519092918416917f057adae5fa3e9caa8a0d584edff60f61558d33f073412ec2d66d558b739e0a41919081900360a00190a3505050505050505050565b620017276200179c565b6001600160a01b0381166200178e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620002b6565b6200179981620017f8565b50565b6000546001600160a01b03163314620002575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604051806020016200185d9062001ae6565b601f1982820381018352601f9091011660408181526001600160a01b038616602083015291925060009101604051602081830303815290604052905060008282604051602001620018b092919062002042565b6040516020818303038152906040529050620018cd868262001a5e565b9695505050505050565b600080604051806020016200185d9062001af4565b600080604051806020016200185d9062001b02565b600080604051806020016200185d9062001b10565b600080604051806020016200192b9062001b1e565b601f1982820381018352601f9091011660408181526001600160a01b03898116602084015288811682840152878116606084015286166080808401919091528151808403909101815260a0830190915291925060009062001993908490849060c00162002042565b6040516020818303038152906040529050620019b0898262001a5e565b9998505050505050505050565b60008060405180602001620019d29062001b2c565b6020820181038252601f19601f82011660405250905060008989898989898960405160200162001a09979695949392919062002075565b60405160208183030381529060405290506000828260405160200162001a3192919062002042565b604051602081830303815290604052905062001a4e8c8262001a5e565b9c9b505050505050505050505050565b6000808360405160200162001a74919062001e0e565b60405160208183030381529060405280519060200120905060008360200184518381836000f592505050803b62001aaa57600080fd5b6040516001600160a01b038216907ff40fcec21964ffb566044d083b4073f29f7f7929110ea19e1b3ebe375d89055e90600090a2949350505050565b6108fc80620020de83390190565b6108fc80620029da83390190565b6108fc80620032d683390190565b6108fc8062003bd283390190565b6109bf80620044ce83390190565b610d058062004e8d83390190565b6001600160a01b03811681146200179957600080fd5b6000806040838503121562001b6457600080fd5b823562001b718162001b3a565b9150602083013562001b838162001b3a565b809150509250929050565b60006020828403121562001ba157600080fd5b813562001bae8162001b3a565b9392505050565b6000806020838503121562001bc957600080fd5b823567ffffffffffffffff8082111562001be257600080fd5b818501915085601f83011262001bf757600080fd5b81358181111562001c0757600080fd5b86602082850101111562001c1a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011262001c5457600080fd5b813567ffffffffffffffff8082111562001c725762001c7262001c2c565b604051601f8301601f19908116603f0116810190828211818310171562001c9d5762001c9d62001c2c565b8160405283815286602085880101111562001cb757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121562001ced57600080fd5b833567ffffffffffffffff8082111562001d0657600080fd5b62001d148783880162001c42565b9450602086013591508082111562001d2b57600080fd5b90850190610140828803121562001d4157600080fd5b9092506040850135908082111562001d5857600080fd5b5084016060818703121562001d6c57600080fd5b809150509250925092565b60006020828403121562001d8a57600080fd5b813567ffffffffffffffff81111562001da257600080fd5b62001db08482850162001c42565b949350505050565b60006020828403121562001dcb57600080fd5b815162001bae8162001b3a565b8183823760009101908152919050565b60005b8381101562001e0557818101518382015260200162001deb565b50506000910152565b6000825162001e2281846020870162001de8565b9190910192915050565b6000808335601e1984360301811262001e4457600080fd5b83018035915067ffffffffffffffff82111562001e6057600080fd5b6020019150600581901b360382131562001e7957600080fd5b9250929050565b6000808335601e1984360301811262001e9857600080fd5b83018035915067ffffffffffffffff82111562001eb457600080fd5b60200191503681900382131562001e7957600080fd5b60006020828403121562001edd57600080fd5b813560ff8116811462001bae57600080fd5b6000815180845262001f0981602086016020860162001de8565b601f01601f19169290920160200192915050565b6001600160a01b0384811682528316602082015260606040820181905260009062001f4b9083018462001eef565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162001f8b57634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111562001fc357600080fd5b8260051b8085606085013791909101606001949350505050565b60006020828403121562001ff057600080fd5b8151801515811462001bae57600080fd5b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b600083516200205681846020880162001de8565b8351908301906200206c81836020880162001de8565b01949350505050565b600060018060a01b03808a1683528089166020840152808816604084015260e06060840152620020a960e084018862001eef565b8381036080850152620020bd818862001eef565b60ff9690961660a0850152509290921660c090910152509594505050505056fe608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca2646970667358221220767f7f15fa2b79a36f47d1631fcda09983190295b6f739a847f30526b8d99f8764736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca2646970667358221220d7fa6a09698043502b95c0e41086ad50abab8e20c278aa6e9bf05f35c381271164736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212204d462243229c9a4f618b5e78ede4cb8a6c05379da46b06c214fd635ea233982864736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516108fc3803806108fc83398101604081905261002f9161022a565b6001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100a0816000805160206108dc83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006100ec6000805160206108dc8339815191525490565b6001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d919061022a565b60408051600481526024810182526020810180516001600160e01b03166370e39c9560e11b17905290519192506000916001600160a01b038416916101919161025a565b600060405180830381855af49150503d80600081146101cc576040519150601f19603f3d011682016040523d82523d6000602084013e6101d1565b606091505b50509050806102225760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401610081565b505050610289565b60006020828403121561023c57600080fd5b81516001600160a01b038116811461025357600080fd5b9392505050565b6000825160005b8181101561027b5760208186018101518583015201610261565b506000920191825250919050565b610644806102986000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca264697066735822122046bd1e737bc572483b8a12ccf53828ce86d1ebbff39dcf3d08a7cc5d0611553464736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc608060405234801561001057600080fd5b506040516109bf3803806109bf83398101604081905261002f916102a7565b6001600160a01b0384161580159061004f57506001600160a01b03831615155b801561006357506001600160a01b03821615155b801561007757506001600160a01b03811615155b6100c85760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b6100de8460008051602061099f83398151915255565b6040516001600160a01b038516907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a2600061012a60008051602061099f8339815191525490565b6001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b91906102fb565b6040516001600160a01b0386811660248301528581166044830152848116606483015291925060009183169060840160408051601f198184030181529181526020820180516001600160e01b031663184b955960e01b179052516101ef919061031d565b600060405180830381855af49150503d806000811461022a576040519150601f19603f3d011682016040523d82523d6000602084013e61022f565b606091505b50509050806102805760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e0000000000000000000060448201526064016100bf565b50505050505061034c565b80516001600160a01b03811681146102a257600080fd5b919050565b600080600080608085870312156102bd57600080fd5b6102c68561028b565b93506102d46020860161028b565b92506102e26040860161028b565b91506102f06060860161028b565b905092959194509250565b60006020828403121561030d57600080fd5b6103168261028b565b9392505050565b6000825160005b8181101561033e5760208186018101518583015201610324565b506000920191825250919050565b6106448061035b6000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212205b0bbfbf5bae650e4abb441a8a5f1e0406d33c46efd18dffab4ab0d97abf3f4364736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc60806040523480156200001157600080fd5b5060405162000d0538038062000d058339810160408190526200003491620004dd565b6001600160a01b038716158015906200005557506001600160a01b03861615155b80156200006a57506001600160a01b03851615155b620000bc5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064015b60405180910390fd5b604051602001620000d890602080825260009082015260400190565b6040516020818303038152906040528051906020012084604051602001620001019190620005da565b60405160208183030381529060405280519060200120141580156200017f57506040516020016200013d90602080825260009082015260400190565b6040516020818303038152906040528051906020012083604051602001620001669190620005da565b6040516020818303038152906040528051906020012014155b620001cd5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d20656d70747920737472696e67006044820152606401620000b3565b60128260ff161115620002235760405162461bcd60e51b815260206004820152601960248201527f646563696d616c73206265747765656e203020616e64203138000000000000006044820152606401620000b3565b6200023b8760008051602062000ce583398151915255565b6040516001600160a01b038816907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a260006200028960008051602062000ce58339815191525490565b6001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed9190620005f6565b90506000816001600160a01b0316888888888888604051602401620003189695949392919062000614565b60408051601f198184030181529181526020820180516001600160e01b0316633e46d86760e21b179052516200034f919062000673565b600060405180830381855af49150503d80600081146200038c576040519150601f19603f3d011682016040523d82523d6000602084013e62000391565b606091505b5050905080620003e45760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e000000000000000000006044820152606401620000b3565b50505050505050505062000691565b80516001600160a01b03811681146200040b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200044357818101518382015260200162000429565b50506000910152565b600082601f8301126200045e57600080fd5b81516001600160401b03808211156200047b576200047b62000410565b604051601f8301601f19908116603f01168101908282118183101715620004a657620004a662000410565b81604052838152866020858801011115620004c057600080fd5b620004d384602083016020890162000426565b9695505050505050565b600080600080600080600060e0888a031215620004f957600080fd5b6200050488620003f3565b96506200051460208901620003f3565b95506200052460408901620003f3565b60608901519095506001600160401b03808211156200054257600080fd5b620005508b838c016200044c565b955060808a01519150808211156200056757600080fd5b50620005768a828b016200044c565b93505060a088015160ff811681146200058e57600080fd5b91506200059e60c08901620003f3565b905092959891949750929550565b60008151808452620005c681602086016020860162000426565b601f01601f19169290920160200192915050565b602081526000620005ef6020830184620005ac565b9392505050565b6000602082840312156200060957600080fd5b620005ef82620003f3565b600060018060a01b038089168352808816602084015260c060408401526200064060c0840188620005ac565b8381036060850152620006548188620005ac565b60ff969096166080850152509290921660a09091015250949350505050565b600082516200068781846020870162000426565b9190910192915050565b61064480620006a16000396000f3fe6080604052600436106100295760003560e01c80632d5f1187146100cf57806392dd9d6514610108575b60006100416000805160206105ef8339815191525490565b6001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a291906105ad565b90503660008037600080366000846127105a03f43d806000803e8180156100c857816000f35b816000fd5b005b3480156100db57600080fd5b506000805160206105ef833981519152546040516001600160a01b03909116815260200160405180910390f35b34801561011457600080fd5b506100cd6101233660046105d1565b6000805160206105ef833981519152546001600160a01b0316336001600160a01b0316146101ae5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c792063757272656e7420696d706c656d656e746174696f6e417574686f60448201526c1c9a5d1e4818d85b8818d85b1b609a1b60648201526084015b60405180910390fd5b6001600160a01b0381166102045760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016101a5565b60006001600160a01b0316816001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027191906105ad565b6001600160a01b0316141580156102fc575060006001600160a01b0316816001600160a01b0316636ff6e83f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f091906105ad565b6001600160a01b031614155b801561037c575060006001600160a01b0316816001600160a01b0316631ee9ce8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037091906105ad565b6001600160a01b031614155b80156103fc575060006001600160a01b0316816001600160a01b0316639e3e7bb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906105ad565b6001600160a01b031614155b801561047c575060006001600160a01b0316816001600160a01b03166361f898256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047091906105ad565b6001600160a01b031614155b80156104fc575060006001600160a01b0316816001600160a01b031663fedcc0526040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f091906105ad565b6001600160a01b031614155b6105485760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420496d706c656d656e746174696f6e20417574686f7269747960448201526064016101a5565b61055e816000805160206105ef83398151915255565b6040516001600160a01b038216907f3b1074392ed8e8424715d0dda2197eede67080b377fc8370e26f3e882207f6b890600090a250565b6001600160a01b03811681146105aa57600080fd5b50565b6000602082840312156105bf57600080fd5b81516105ca81610595565b9392505050565b6000602082840312156105e357600080fd5b81356105ca8161059556fe821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212207b444bee130348fa6d075656698ddec57b7a49ccf7c520b62b5093a3b517441964736f6c63430008110033821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafca26469706673582212202d3b037314af505de8a28dafb142a240fd612e2add217d78d2d91c768bf0e0ca64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
