{
  "_format": "hh-sol-artifact-1",
  "contractName": "ApxAssetsRegistry",
  "sourceName": "contracts/apx-protocol/ApxAssetsRegistry.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_masterOwner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_assetManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_priceManager",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "calller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAssetsRegistry",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "originalAsset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "Migrate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "mirrored",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "state",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "RegisterAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAssetManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAssetManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TransferAssetManagerRole",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldMasterOwner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newMasterOwner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TransferMasterOwnerRole",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldPriceManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newPriceManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TransferPriceManagerRole",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "priceManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "UpdatePrice",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "assetManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "UpdateState",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "FLAVOR",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "assetManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "flavor",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getMirrored",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "originalToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "mirroredToken",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "exists",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "state",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "stateUpdatedAt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "priceUpdatedAt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "priceValidUntil",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capturedSupply",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "priceProvider",
              "type": "address"
            }
          ],
          "internalType": "struct Structs.AssetRecord",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        }
      ],
      "name": "getMirroredFromOriginal",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "originalToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "mirroredToken",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "exists",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "state",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "stateUpdatedAt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "priceUpdatedAt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "priceValidUntil",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capturedSupply",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "priceProvider",
              "type": "address"
            }
          ],
          "internalType": "struct Structs.AssetRecord",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMirroredList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "masterOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAssetsRegistry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "originalAsset",
          "type": "address"
        }
      ],
      "name": "migrate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "priceManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "mirrored",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "state",
          "type": "bool"
        }
      ],
      "name": "registerAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAssetManager",
          "type": "address"
        }
      ],
      "name": "transferAssetManagerRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newMasterOwner",
          "type": "address"
        }
      ],
      "name": "transferMasterOwnerRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newPriceManager",
          "type": "address"
        }
      ],
      "name": "transferPriceManagerRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "capturedSupply",
          "type": "uint256"
        }
      ],
      "name": "updatePrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "state",
          "type": "bool"
        }
      ],
      "name": "updateState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001aaf38038062001aaf833981016040819052620000349162000094565b600080546001600160a01b039485166001600160a01b031991821617909155600180549385169382169390931790925560028054919093169116179055620000dd565b80516001600160a01b03811681146200008f57600080fd5b919050565b600080600060608486031215620000a9578283fd5b620000b48462000077565b9250620000c46020850162000077565b9150620000d46040850162000077565b90509250925092565b6119c280620000ed6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80636fb3ebf3116100a2578063d44ced8011610071578063d44ced80146101fc578063e7201d7d1461020f578063f59e4f6514610217578063fc13d1cb1461021f578063ffa1ad74146102325761010b565b80636fb3ebf3146101b757806394217ad1146101cc578063a02ba2e5146101e1578063c7e1ffe3146101f45761010b565b806354fd4d50116100de57806354fd4d501461017457806358c1c499146101895780635cd977f314610191578063631bed4e146101a45761010b565b80631068361f146101105780633ac47c0a146101255780634028d0e91461014e5780634c8c697614610161575b600080fd5b61012361011e366004611060565b61023a565b005b61013861013336600461103d565b610417565b604051610145919061186e565b60405180910390f35b61013861015c36600461103d565b6104c8565b61012361016f36600461110f565b610582565b61017c6107d0565b604051610145919061135c565b61017c6107f0565b61012361019f366004611098565b61081f565b6101236101b23660046110e2565b610c44565b6101bf610d37565b604051610145919061130f565b6101d4610d99565b604051610145919061121d565b6101236101ef36600461103d565b610da8565b6101d4610e41565b61012361020a36600461103d565b610e50565b6101d4610ede565b61017c610eed565b61012361022d36600461103d565b610f1a565b61017c610f93565b6000546001600160a01b0316331461026d5760405162461bcd60e51b81526004016102649061141b565b60405180910390fd5b6001600160a01b0382166102935760405162461bcd60e51b815260040161026490611766565b6001600160a01b0381166102b95760405162461bcd60e51b815260040161026490611656565b604051634028d0e960e01b81526001600160a01b03831690634028d0e9906102e590849060040161121d565b6101406040518083038186803b1580156102fe57600080fd5b505afa158015610312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103369190611149565b6020908101516001600160a01b038381166000908152600490935260409092205482169116146103785760405162461bcd60e51b8152600401610264906113af565b6040516391b14c5f60e01b81526001600160a01b038216906391b14c5f906103a490859060040161121d565b600060405180830381600087803b1580156103be57600080fd5b505af11580156103d2573d6000803e3d6000fd5b505050507f6daef94fbc8b59fa3c2376fe03e2136d1e8be75d43940cecb1041ee373fbd76c3383834260405161040b9493929190611265565b60405180910390a15050565b61041f610fb5565b506001600160a01b0380821660009081526003602081815260409283902083516101408101855281548616815260018201548087169382019390935260ff600160a01b84048116151595820195909552600160a81b90920490931615156060820152600283015460808201529082015460a0820152600482015460c0820152600582015460e082015260068201546101008201526007909101549091166101208201525b919050565b6104d0610fb5565b506001600160a01b039081166000908152600460208181526040808420548516845260038083529381902081516101408101835281548716815260018201548088169482019490945260ff600160a01b85048116151593820193909352600160a81b90930490911615156060830152600281015460808301529283015460a08201529082015460c0820152600582015460e0820152600682015461010082015260079091015490911661012082015290565b6002546001600160a01b03163314806105a557506000546001600160a01b031633145b6105c15760405162461bcd60e51b8152600401610264906116a6565b6001600160a01b0384166000908152600360205260409020600101548490600160a01b900460ff166106055760405162461bcd60e51b81526004016102649061160e565b6001600160a01b038516600090815260036020526040902060010154600160a81b900460ff166106475760405162461bcd60e51b815260040161026490611478565b600084116106675760405162461bcd60e51b815260040161026490611827565b600083116106875760405162461bcd60e51b8152600401610264906115c6565b846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c057600080fd5b505afa1580156106d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f891906111f2565b82146107165760405162461bcd60e51b815260040161026490611719565b6001600160a01b038516600090815260036020819052604090912090810185905542600490910181905561074b908490611942565b6001600160a01b03861660009081526003602052604090819020600581019290925560068201849055600790910180546001600160a01b0319163390811790915590517f764efc646c4a475777adaf94d5678eed6cf6f7996cab33b6d14f08fb90c67732916107c19188908890889042906112de565b60405180910390a15050505050565b604080518082019091526006815265312e302e313560d01b602082015290565b604051806040016040528060138152602001724170784173736574735265676973747279563160681b81525081565b6001546001600160a01b031633148061084257506000546001600160a01b031633145b61085e5760405162461bcd60e51b8152600401610264906117b4565b6001600160a01b038216600090815260036020526040902060010154600160a01b900460ff16158061091957506001600160a01b038083166000908152600360209081526040918290206001015482516318160ddd60e01b815292519316926318160ddd926004808201939291829003018186803b1580156108df57600080fd5b505afa1580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906111f2565b155b6109355760405162461bcd60e51b815260040161026490611543565b816001600160a01b0316836001600160a01b031614806109c35750816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098957600080fd5b505afa15801561099d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c191906111f2565b155b6109df5760405162461bcd60e51b8152600401610264906114d5565b8160046000856001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604051806101400160405280846001600160a01b03168152602001836001600160a01b0316815260200160011515815260200182151581526020014281526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525060036000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160010160156101000a81548160ff0219169083151502179055506080820151816002015560a0820151816003015560c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506005829080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055507f20ffaa7cdef32ec390faba0b6c0fdde9d04556adc454c357318ba6a33f7761243384848442604051610c37959493929190611231565b60405180910390a1505050565b6001546001600160a01b0316331480610c6757506000546001600160a01b031633145b610c835760405162461bcd60e51b8152600401610264906117b4565b6001600160a01b0382166000908152600360205260409020600101548290600160a01b900460ff16610cc75760405162461bcd60e51b81526004016102649061160e565b6001600160a01b0383166000908152600360205260409081902060018101805460ff60a81b1916600160a81b8615150217905542600290910181905590517ff56e3cdcfda01076824a09b404cc7d19307f02108fd00e25df2dd0670c2bf77491610c37913391879187919061128f565b60606005805480602002602001604051908101604052809291908181526020018280548015610d8f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d71575b5050505050905090565b6001546001600160a01b031681565b6002546001600160a01b0316331480610dcb57506000546001600160a01b031633145b610de75760405162461bcd60e51b8152600401610264906116a6565b600280546001600160a01b0319166001600160a01b0383161790556040517f14cd355c85a2e508b50dae93ed34d367acd01bbb6d73eadaa0ebf33683f7c00790610e36903390849042906112ba565b60405180910390a150565b6002546001600160a01b031681565b6001546001600160a01b0316331480610e7357506000546001600160a01b031633145b610e8f5760405162461bcd60e51b8152600401610264906117b4565b600180546001600160a01b0319166001600160a01b0383161790556040517f33742cb416d6896cf707f66ff94306a754023f9cb56bd1011aa4e2a6339eb3b590610e36903390849042906112ba565b6000546001600160a01b031681565b6040805180820190915260138152724170784173736574735265676973747279563160681b602082015290565b6000546001600160a01b03163314610f445760405162461bcd60e51b81526004016102649061141b565b600080546001600160a01b0319166001600160a01b0383161790556040517f1bdded3f0710f518febc34900b2cd7eea256176e53be840fc3c01234f49697ee90610e36903390849042906112ba565b60405180604001604052806006815260200165312e302e313560d01b81525081565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600015158152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b80516104c381611966565b80516104c38161197e565b60006020828403121561104e578081fd5b813561105981611966565b9392505050565b60008060408385031215611072578081fd5b823561107d81611966565b9150602083013561108d81611966565b809150509250929050565b6000806000606084860312156110ac578081fd5b83356110b781611966565b925060208401356110c781611966565b915060408401356110d78161197e565b809150509250925092565b600080604083850312156110f4578182fd5b82356110ff81611966565b9150602083013561108d8161197e565b60008060008060808587031215611124578081fd5b843561112f81611966565b966020860135965060408601359560600135945092505050565b600061014080838503121561115c578182fd5b6111658161190a565b905061117083611027565b815261117e60208401611027565b602082015261118f60408401611032565b60408201526111a060608401611032565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206111e7818501611027565b908201529392505050565b600060208284031215611203578081fd5b5051919050565b6001600160a01b03169052565b15159052565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301529115156060820152608081019190915260a00190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b03948516815292909316602083015215156040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6020808252825182820181905260009190848201906040850190845b818110156113505783516001600160a01b03168352928401929184019160010161132b565b50909695505050505050565b6000602080835283518082850152825b818110156113885785810183015185820160400152820161136c565b818111156113995783604083870101525b50601f01601f1916929092016040019392505050565b60208082526046908201527f41707841737365747352656769737472793a204d6972726f72656420746f6b6560408201527f6e7320696e20746865206e657720616e64206f6c64207265676973747279206460608201526534b33332b91760d11b608082015260a00190565b6020808252603c908201527f41707841737365747352656769737472793a204f6e6c79206d6173746572206f60408201527f776e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000606082015260800190565b6020808252603d908201527f41707841737365747352656769737472793a2043616e2075706461746520707260408201527f69636520666f7220617070726f76656420617373657473206f6e6c792e000000606082015260800190565b60208082526048908201527f41707841737365747352656769737472793a204d6972726f726564206173736560408201527f742070726f76696465642073686f756c64206861766520696e697469616c20736060820152673ab838363c90181760c11b608082015260a00190565b60208082526058908201527f41707841737365747352656769737472793a204d6972726f726564206173736560408201527f7420616c72656164792065786973747320616e6420697320696e20636972637560608201527f6c6174696f6e2e2043616e2774206f76657277726974652e0000000000000000608082015260a00190565b60208082526028908201527f41707841737365747352656769737472793a206578706972792068617320746f604082015267206265203e20303b60c01b606082015260800190565b60208082526028908201527f41707841737365747352656769737472793a20417373657420646f6573206e6f6040820152673a1032bc34b9ba1760c11b606082015260800190565b60208082526030908201527f41707841737365747352656769737472793a20496e76616c6964206f7269676960408201526f6e616c4173736574206164647265737360801b606082015260800190565b6020808252604d908201527f41707841737365747352656769737472793a204f6e6c79207072696365206d6160408201527f6e61676572206f72206d6173746572206f776e65722063616e2063616c6c207460608201526c3434b990333ab731ba34b7b71760991b608082015260a00190565b6020808252602d908201527f41707841737365747352656769737472793a20696e636f6e73697374656e742060408201526c30b9b9b2ba1039bab838363c9760991b606082015260800190565b6020808252602e908201527f41707841737365747352656769737472793a20496e76616c696420617078526560408201526d676973747279206164647265737360901b606082015260800190565b6020808252604d908201527f41707841737365747352656769737472793a204f6e6c79206173736574206d6160408201527f6e61676572206f72206d6173746572206f776e65722063616e2063616c6c207460608201526c3434b990333ab731ba34b7b71760991b608082015260a00190565b60208082526027908201527f41707841737365747352656769737472793a2070726963652068617320746f206040820152666265203e20303b60c81b606082015260800190565b60006101408201905061188282845161120a565b6020830151611894602084018261120a565b5060408301516118a76040840182611217565b5060608301516118ba6060840182611217565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516119028285018261120a565b505092915050565b60405181810167ffffffffffffffff8111828210171561193a57634e487b7160e01b600052604160045260246000fd5b604052919050565b6000821982111561196157634e487b7160e01b81526011600452602481fd5b500190565b6001600160a01b038116811461197b57600080fd5b50565b801515811461197b57600080fdfea26469706673582212200af2eb3d58ed5ee35c8f8cc6ab26c63116082f2eaa4a56dafb9c9b13ed8e3bfd64736f6c63430008000033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80636fb3ebf3116100a2578063d44ced8011610071578063d44ced80146101fc578063e7201d7d1461020f578063f59e4f6514610217578063fc13d1cb1461021f578063ffa1ad74146102325761010b565b80636fb3ebf3146101b757806394217ad1146101cc578063a02ba2e5146101e1578063c7e1ffe3146101f45761010b565b806354fd4d50116100de57806354fd4d501461017457806358c1c499146101895780635cd977f314610191578063631bed4e146101a45761010b565b80631068361f146101105780633ac47c0a146101255780634028d0e91461014e5780634c8c697614610161575b600080fd5b61012361011e366004611060565b61023a565b005b61013861013336600461103d565b610417565b604051610145919061186e565b60405180910390f35b61013861015c36600461103d565b6104c8565b61012361016f36600461110f565b610582565b61017c6107d0565b604051610145919061135c565b61017c6107f0565b61012361019f366004611098565b61081f565b6101236101b23660046110e2565b610c44565b6101bf610d37565b604051610145919061130f565b6101d4610d99565b604051610145919061121d565b6101236101ef36600461103d565b610da8565b6101d4610e41565b61012361020a36600461103d565b610e50565b6101d4610ede565b61017c610eed565b61012361022d36600461103d565b610f1a565b61017c610f93565b6000546001600160a01b0316331461026d5760405162461bcd60e51b81526004016102649061141b565b60405180910390fd5b6001600160a01b0382166102935760405162461bcd60e51b815260040161026490611766565b6001600160a01b0381166102b95760405162461bcd60e51b815260040161026490611656565b604051634028d0e960e01b81526001600160a01b03831690634028d0e9906102e590849060040161121d565b6101406040518083038186803b1580156102fe57600080fd5b505afa158015610312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103369190611149565b6020908101516001600160a01b038381166000908152600490935260409092205482169116146103785760405162461bcd60e51b8152600401610264906113af565b6040516391b14c5f60e01b81526001600160a01b038216906391b14c5f906103a490859060040161121d565b600060405180830381600087803b1580156103be57600080fd5b505af11580156103d2573d6000803e3d6000fd5b505050507f6daef94fbc8b59fa3c2376fe03e2136d1e8be75d43940cecb1041ee373fbd76c3383834260405161040b9493929190611265565b60405180910390a15050565b61041f610fb5565b506001600160a01b0380821660009081526003602081815260409283902083516101408101855281548616815260018201548087169382019390935260ff600160a01b84048116151595820195909552600160a81b90920490931615156060820152600283015460808201529082015460a0820152600482015460c0820152600582015460e082015260068201546101008201526007909101549091166101208201525b919050565b6104d0610fb5565b506001600160a01b039081166000908152600460208181526040808420548516845260038083529381902081516101408101835281548716815260018201548088169482019490945260ff600160a01b85048116151593820193909352600160a81b90930490911615156060830152600281015460808301529283015460a08201529082015460c0820152600582015460e0820152600682015461010082015260079091015490911661012082015290565b6002546001600160a01b03163314806105a557506000546001600160a01b031633145b6105c15760405162461bcd60e51b8152600401610264906116a6565b6001600160a01b0384166000908152600360205260409020600101548490600160a01b900460ff166106055760405162461bcd60e51b81526004016102649061160e565b6001600160a01b038516600090815260036020526040902060010154600160a81b900460ff166106475760405162461bcd60e51b815260040161026490611478565b600084116106675760405162461bcd60e51b815260040161026490611827565b600083116106875760405162461bcd60e51b8152600401610264906115c6565b846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c057600080fd5b505afa1580156106d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f891906111f2565b82146107165760405162461bcd60e51b815260040161026490611719565b6001600160a01b038516600090815260036020819052604090912090810185905542600490910181905561074b908490611942565b6001600160a01b03861660009081526003602052604090819020600581019290925560068201849055600790910180546001600160a01b0319163390811790915590517f764efc646c4a475777adaf94d5678eed6cf6f7996cab33b6d14f08fb90c67732916107c19188908890889042906112de565b60405180910390a15050505050565b604080518082019091526006815265312e302e313560d01b602082015290565b604051806040016040528060138152602001724170784173736574735265676973747279563160681b81525081565b6001546001600160a01b031633148061084257506000546001600160a01b031633145b61085e5760405162461bcd60e51b8152600401610264906117b4565b6001600160a01b038216600090815260036020526040902060010154600160a01b900460ff16158061091957506001600160a01b038083166000908152600360209081526040918290206001015482516318160ddd60e01b815292519316926318160ddd926004808201939291829003018186803b1580156108df57600080fd5b505afa1580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906111f2565b155b6109355760405162461bcd60e51b815260040161026490611543565b816001600160a01b0316836001600160a01b031614806109c35750816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098957600080fd5b505afa15801561099d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c191906111f2565b155b6109df5760405162461bcd60e51b8152600401610264906114d5565b8160046000856001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604051806101400160405280846001600160a01b03168152602001836001600160a01b0316815260200160011515815260200182151581526020014281526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525060036000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160010160156101000a81548160ff0219169083151502179055506080820151816002015560a0820151816003015560c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506005829080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055507f20ffaa7cdef32ec390faba0b6c0fdde9d04556adc454c357318ba6a33f7761243384848442604051610c37959493929190611231565b60405180910390a1505050565b6001546001600160a01b0316331480610c6757506000546001600160a01b031633145b610c835760405162461bcd60e51b8152600401610264906117b4565b6001600160a01b0382166000908152600360205260409020600101548290600160a01b900460ff16610cc75760405162461bcd60e51b81526004016102649061160e565b6001600160a01b0383166000908152600360205260409081902060018101805460ff60a81b1916600160a81b8615150217905542600290910181905590517ff56e3cdcfda01076824a09b404cc7d19307f02108fd00e25df2dd0670c2bf77491610c37913391879187919061128f565b60606005805480602002602001604051908101604052809291908181526020018280548015610d8f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d71575b5050505050905090565b6001546001600160a01b031681565b6002546001600160a01b0316331480610dcb57506000546001600160a01b031633145b610de75760405162461bcd60e51b8152600401610264906116a6565b600280546001600160a01b0319166001600160a01b0383161790556040517f14cd355c85a2e508b50dae93ed34d367acd01bbb6d73eadaa0ebf33683f7c00790610e36903390849042906112ba565b60405180910390a150565b6002546001600160a01b031681565b6001546001600160a01b0316331480610e7357506000546001600160a01b031633145b610e8f5760405162461bcd60e51b8152600401610264906117b4565b600180546001600160a01b0319166001600160a01b0383161790556040517f33742cb416d6896cf707f66ff94306a754023f9cb56bd1011aa4e2a6339eb3b590610e36903390849042906112ba565b6000546001600160a01b031681565b6040805180820190915260138152724170784173736574735265676973747279563160681b602082015290565b6000546001600160a01b03163314610f445760405162461bcd60e51b81526004016102649061141b565b600080546001600160a01b0319166001600160a01b0383161790556040517f1bdded3f0710f518febc34900b2cd7eea256176e53be840fc3c01234f49697ee90610e36903390849042906112ba565b60405180604001604052806006815260200165312e302e313560d01b81525081565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600015158152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b80516104c381611966565b80516104c38161197e565b60006020828403121561104e578081fd5b813561105981611966565b9392505050565b60008060408385031215611072578081fd5b823561107d81611966565b9150602083013561108d81611966565b809150509250929050565b6000806000606084860312156110ac578081fd5b83356110b781611966565b925060208401356110c781611966565b915060408401356110d78161197e565b809150509250925092565b600080604083850312156110f4578182fd5b82356110ff81611966565b9150602083013561108d8161197e565b60008060008060808587031215611124578081fd5b843561112f81611966565b966020860135965060408601359560600135945092505050565b600061014080838503121561115c578182fd5b6111658161190a565b905061117083611027565b815261117e60208401611027565b602082015261118f60408401611032565b60408201526111a060608401611032565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206111e7818501611027565b908201529392505050565b600060208284031215611203578081fd5b5051919050565b6001600160a01b03169052565b15159052565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301529115156060820152608081019190915260a00190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b03948516815292909316602083015215156040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6020808252825182820181905260009190848201906040850190845b818110156113505783516001600160a01b03168352928401929184019160010161132b565b50909695505050505050565b6000602080835283518082850152825b818110156113885785810183015185820160400152820161136c565b818111156113995783604083870101525b50601f01601f1916929092016040019392505050565b60208082526046908201527f41707841737365747352656769737472793a204d6972726f72656420746f6b6560408201527f6e7320696e20746865206e657720616e64206f6c64207265676973747279206460608201526534b33332b91760d11b608082015260a00190565b6020808252603c908201527f41707841737365747352656769737472793a204f6e6c79206d6173746572206f60408201527f776e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000606082015260800190565b6020808252603d908201527f41707841737365747352656769737472793a2043616e2075706461746520707260408201527f69636520666f7220617070726f76656420617373657473206f6e6c792e000000606082015260800190565b60208082526048908201527f41707841737365747352656769737472793a204d6972726f726564206173736560408201527f742070726f76696465642073686f756c64206861766520696e697469616c20736060820152673ab838363c90181760c11b608082015260a00190565b60208082526058908201527f41707841737365747352656769737472793a204d6972726f726564206173736560408201527f7420616c72656164792065786973747320616e6420697320696e20636972637560608201527f6c6174696f6e2e2043616e2774206f76657277726974652e0000000000000000608082015260a00190565b60208082526028908201527f41707841737365747352656769737472793a206578706972792068617320746f604082015267206265203e20303b60c01b606082015260800190565b60208082526028908201527f41707841737365747352656769737472793a20417373657420646f6573206e6f6040820152673a1032bc34b9ba1760c11b606082015260800190565b60208082526030908201527f41707841737365747352656769737472793a20496e76616c6964206f7269676960408201526f6e616c4173736574206164647265737360801b606082015260800190565b6020808252604d908201527f41707841737365747352656769737472793a204f6e6c79207072696365206d6160408201527f6e61676572206f72206d6173746572206f776e65722063616e2063616c6c207460608201526c3434b990333ab731ba34b7b71760991b608082015260a00190565b6020808252602d908201527f41707841737365747352656769737472793a20696e636f6e73697374656e742060408201526c30b9b9b2ba1039bab838363c9760991b606082015260800190565b6020808252602e908201527f41707841737365747352656769737472793a20496e76616c696420617078526560408201526d676973747279206164647265737360901b606082015260800190565b6020808252604d908201527f41707841737365747352656769737472793a204f6e6c79206173736574206d6160408201527f6e61676572206f72206d6173746572206f776e65722063616e2063616c6c207460608201526c3434b990333ab731ba34b7b71760991b608082015260a00190565b60208082526027908201527f41707841737365747352656769737472793a2070726963652068617320746f206040820152666265203e20303b60c81b606082015260800190565b60006101408201905061188282845161120a565b6020830151611894602084018261120a565b5060408301516118a76040840182611217565b5060608301516118ba6060840182611217565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516119028285018261120a565b505092915050565b60405181810167ffffffffffffffff8111828210171561193a57634e487b7160e01b600052604160045260246000fd5b604052919050565b6000821982111561196157634e487b7160e01b81526011600452602481fd5b500190565b6001600160a01b038116811461197b57600080fd5b50565b801515811461197b57600080fdfea26469706673582212200af2eb3d58ed5ee35c8f8cc6ab26c63116082f2eaa4a56dafb9c9b13ed8e3bfd64736f6c63430008000033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
