{
  "_format": "hh-sol-artifact-1",
  "contractName": "CountryRestrictionsTest",
  "sourceName": "contracts/compliance/legacy/test/CountryRestrictionsTest.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "AddedRestrictedCountry",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "AgentAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "AgentRemoved",
      "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": false,
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "RemovedRestrictedCountry",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "TokenAgentAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "TokenAgentRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "TokenBound",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "TokenUnbound",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "addAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "addCountryRestriction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "addTokenAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16[]",
          "name": "_countries",
          "type": "uint16[]"
        }
      ],
      "name": "batchRestrictCountries",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16[]",
          "name": "_countries",
          "type": "uint16[]"
        }
      ],
      "name": "batchUnrestrictCountries",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "bindToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "canTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "complianceCheckOnCountryRestrictions",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "created",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "destroyed",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "isAgent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "isCountryRestricted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "isTokenAgent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "isTokenBound",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "removeAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "removeCountryRestriction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "removeTokenAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenBound",
      "outputs": [
        {
          "internalType": "contract IToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferred",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "unbindToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6111a48061007e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638d2ea772116100c3578063bdf9a07e1161007c578063bdf9a07e146102b4578063c7a4ecf8146102c7578063cdde2932146102da578063e46638e6146102ed578063f2fde38b14610300578063ff3e69541461031357600080fd5b80638d2ea772146101db5780638da5cb5b1461022f57806393e62f071461025457806397a6278e14610267578063993e8b951461027a578063bc4c85521461028d57600080fd5b806340db3b501161011557806340db3b50146101c85780635f8dead3146101db5780636aae7b26146101ee578063715018a61461020157806384e79842146102095780638baf29b41461021c57600080fd5b80630333ce24146101525780631ffbb06414610167578063249c981d1461018f578063346531fa146101a25780633ff5aa02146101b5575b600080fd5b610165610160366004610f3a565b610326565b005b61017a610175366004610f6c565b6103ed565b60405190151581526020015b60405180910390f35b61016561019d366004610f89565b610400565b61017a6101b0366004610f6c565b61044c565b6101656101c3366004610f6c565b6104f5565b6101656101d6366004610f6c565b6105d3565b6101656101e9366004610ffe565b6106f5565b6101656101fc366004610f3a565b61071d565b6101656107cd565b610165610217366004610f6c565b6107e1565b61016561022a36600461102a565b610881565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b60035461023c906001600160a01b031681565b610165610275366004610f6c565b6108a5565b61017a610288366004610f6c565b610945565b61017a61029b366004610f3a565b61ffff1660009081526004602052604090205460ff1690565b6101656102c2366004610f89565b610965565b61017a6102d536600461102a565b6109ac565b6101656102e8366004610f6c565b6109f3565b61017a6102fb36600461102a565b610ab4565b61016561030e366004610f6c565b610ad7565b610165610321366004610f6c565b610b50565b61032e610c15565b61ffff811660009081526004602052604090205460ff16156103975760405162461bcd60e51b815260206004820152601a60248201527f636f756e74727920616c7265616479207265737472696374656400000000000060448201526064015b60405180910390fd5b61ffff8116600081815260046020908152604091829020805460ff1916600117905590519182527f686ddf4acaa296f02dade9efd41d8a09a2eba14d730f9117404e6ffe6b96a01891015b60405180910390a150565b60006103fa600183610c6f565b92915050565b60005b81811015610447576104358383838181106104205761042061106b565b90506020020160208101906101fc9190610f3a565b8061043f81611081565b915050610403565b505050565b6001600160a01b03811660009081526002602052604081205460ff161580156104e057506003546040516307feec1960e21b81526001600160a01b03848116600483015290911690631ffbb06490602401602060405180830381865afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104de91906110a8565b155b156104ed57506000919050565b506001919050565b336105086000546001600160a01b031690565b6001600160a01b0316148061053957506003546001600160a01b03161580156105395750336001600160a01b038216145b6105855760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c00000000604482015260640161038e565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f2de35142b19ed5a07796cf30791959c592018f70b1d2d7c460eef8ffe713692b906020016103e2565b336105e66000546001600160a01b031690565b6001600160a01b031614806106035750336001600160a01b038216145b61064f5760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c00000000604482015260640161038e565b6003546001600160a01b038281169116146106ac5760405162461bcd60e51b815260206004820152601760248201527f5468697320746f6b656e206973206e6f7420626f756e64000000000000000000604482015260640161038e565b600380546001600160a01b03191690556040516001600160a01b03821681527f28a4ca7134a3b3f9aff286e79ad3daadb4a06d1b43d037a3a98bdc074edd9b7a906020016103e2565b6106fd610cf2565b6107195760405162461bcd60e51b815260040161038e906110ca565b5050565b610725610c15565b61ffff811660009081526004602052604090205460ff166107815760405162461bcd60e51b815260206004820152601660248201527518dbdd5b9d1c9e481b9bdd081c995cdd1c9a58dd195960521b604482015260640161038e565b61ffff8116600081815260046020908152604091829020805460ff1916905590519182527f7dad2e3bc77f5830a7421a19a06cee2e76fcd4bdbe0793f240b3cf094cebcceb91016103e2565b6107d5610c15565b6107df6000610d02565b565b6107e9610c15565b6001600160a01b03811661083f5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161038e565b61084a600182610d52565b6040516001600160a01b038216907ff68e73cec97f2d70aa641fb26e87a4383686e2efacb648f2165aeb02ac562ec590600090a250565b610889610cf2565b6104475760405162461bcd60e51b815260040161038e906110ca565b6108ad610c15565b6001600160a01b0381166109035760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161038e565b61090e600182610dce565b6040516001600160a01b038216907fed9c8ad8d5a0a66898ea49d2956929c93ae2e8bd50281b2ed897c5d1a6737e0b90600090a250565b6003546000906001600160a01b038381169116146104ed57506000919050565b60005b818110156104475761099a8383838181106109855761098561106b565b90506020020160208101906101609190610f3a565b806109a481611081565b915050610968565b6000806109b884610e50565b90506109d78161ffff1660009081526004602052604090205460ff1690565b156109e65760009150506109ec565b60019150505b9392505050565b6109fb610c15565b6001600160a01b03811660009081526002602052604090205460ff16610a635760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e74206973206e6f74207265676973746572656420796574604482015260640161038e565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f6a659bb87bb23efbdc295f8eed8ae8c4379bfb77660ced2ef0f3d7d26b05c6a691016103e2565b6000610ac18484846109ac565b610acd575060006109ec565b5060019392505050565b610adf610c15565b6001600160a01b038116610b445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161038e565b610b4d81610d02565b50565b610b58610c15565b6001600160a01b03811660009081526002602052604090205460ff1615610bc15760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e7420697320616c72656164792072656769737465726564604482015260640161038e565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527fd62c45e13ac30396aceb3ad37c89bd1ba9048032fe61679000e92eb93dbfd67d91016103e2565b6000546001600160a01b031633146107df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161038e565b60006001600160a01b038216610cd25760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b606482015260840161038e565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610cfd33610945565b905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610d5c8282610c6f565b15610da95760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015260640161038e565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610dd88282610c6f565b610e2e5760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b606482015260840161038e565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b600354604080516304d3863d60e21b815290516000926001600160a01b03169163134e18f49160048083019260209291908290030181865afa158015610e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebe9190611134565b604051637e42683b60e01b81526001600160a01b0384811660048301529190911690637e42683b90602401602060405180830381865afa158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fa9190611151565b61ffff81168114610b4d57600080fd5b600060208284031215610f4c57600080fd5b81356109ec81610f2a565b6001600160a01b0381168114610b4d57600080fd5b600060208284031215610f7e57600080fd5b81356109ec81610f57565b60008060208385031215610f9c57600080fd5b823567ffffffffffffffff80821115610fb457600080fd5b818501915085601f830112610fc857600080fd5b813581811115610fd757600080fd5b8660208260051b8501011115610fec57600080fd5b60209290920196919550909350505050565b6000806040838503121561101157600080fd5b823561101c81610f57565b946020939093013593505050565b60008060006060848603121561103f57600080fd5b833561104a81610f57565b9250602084013561105a81610f57565b929592945050506040919091013590565b634e487b7160e01b600052603260045260246000fd5b6000600182016110a157634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156110ba57600080fd5b815180151581146109ec57600080fd5b60208082526044908201527f6572726f72203a20746869732061646472657373206973206e6f74206120746f60408201527f6b656e20626f756e6420746f2074686520636f6d706c69616e636520636f6e746060820152631c9858dd60e21b608082015260a00190565b60006020828403121561114657600080fd5b81516109ec81610f57565b60006020828403121561116357600080fd5b81516109ec81610f2a56fea2646970667358221220b052308067ae1e29b3f8641f8e62f89dae4b3643701240b1e5bb3419d572c57264736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638d2ea772116100c3578063bdf9a07e1161007c578063bdf9a07e146102b4578063c7a4ecf8146102c7578063cdde2932146102da578063e46638e6146102ed578063f2fde38b14610300578063ff3e69541461031357600080fd5b80638d2ea772146101db5780638da5cb5b1461022f57806393e62f071461025457806397a6278e14610267578063993e8b951461027a578063bc4c85521461028d57600080fd5b806340db3b501161011557806340db3b50146101c85780635f8dead3146101db5780636aae7b26146101ee578063715018a61461020157806384e79842146102095780638baf29b41461021c57600080fd5b80630333ce24146101525780631ffbb06414610167578063249c981d1461018f578063346531fa146101a25780633ff5aa02146101b5575b600080fd5b610165610160366004610f3a565b610326565b005b61017a610175366004610f6c565b6103ed565b60405190151581526020015b60405180910390f35b61016561019d366004610f89565b610400565b61017a6101b0366004610f6c565b61044c565b6101656101c3366004610f6c565b6104f5565b6101656101d6366004610f6c565b6105d3565b6101656101e9366004610ffe565b6106f5565b6101656101fc366004610f3a565b61071d565b6101656107cd565b610165610217366004610f6c565b6107e1565b61016561022a36600461102a565b610881565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b60035461023c906001600160a01b031681565b610165610275366004610f6c565b6108a5565b61017a610288366004610f6c565b610945565b61017a61029b366004610f3a565b61ffff1660009081526004602052604090205460ff1690565b6101656102c2366004610f89565b610965565b61017a6102d536600461102a565b6109ac565b6101656102e8366004610f6c565b6109f3565b61017a6102fb36600461102a565b610ab4565b61016561030e366004610f6c565b610ad7565b610165610321366004610f6c565b610b50565b61032e610c15565b61ffff811660009081526004602052604090205460ff16156103975760405162461bcd60e51b815260206004820152601a60248201527f636f756e74727920616c7265616479207265737472696374656400000000000060448201526064015b60405180910390fd5b61ffff8116600081815260046020908152604091829020805460ff1916600117905590519182527f686ddf4acaa296f02dade9efd41d8a09a2eba14d730f9117404e6ffe6b96a01891015b60405180910390a150565b60006103fa600183610c6f565b92915050565b60005b81811015610447576104358383838181106104205761042061106b565b90506020020160208101906101fc9190610f3a565b8061043f81611081565b915050610403565b505050565b6001600160a01b03811660009081526002602052604081205460ff161580156104e057506003546040516307feec1960e21b81526001600160a01b03848116600483015290911690631ffbb06490602401602060405180830381865afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104de91906110a8565b155b156104ed57506000919050565b506001919050565b336105086000546001600160a01b031690565b6001600160a01b0316148061053957506003546001600160a01b03161580156105395750336001600160a01b038216145b6105855760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c00000000604482015260640161038e565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f2de35142b19ed5a07796cf30791959c592018f70b1d2d7c460eef8ffe713692b906020016103e2565b336105e66000546001600160a01b031690565b6001600160a01b031614806106035750336001600160a01b038216145b61064f5760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c00000000604482015260640161038e565b6003546001600160a01b038281169116146106ac5760405162461bcd60e51b815260206004820152601760248201527f5468697320746f6b656e206973206e6f7420626f756e64000000000000000000604482015260640161038e565b600380546001600160a01b03191690556040516001600160a01b03821681527f28a4ca7134a3b3f9aff286e79ad3daadb4a06d1b43d037a3a98bdc074edd9b7a906020016103e2565b6106fd610cf2565b6107195760405162461bcd60e51b815260040161038e906110ca565b5050565b610725610c15565b61ffff811660009081526004602052604090205460ff166107815760405162461bcd60e51b815260206004820152601660248201527518dbdd5b9d1c9e481b9bdd081c995cdd1c9a58dd195960521b604482015260640161038e565b61ffff8116600081815260046020908152604091829020805460ff1916905590519182527f7dad2e3bc77f5830a7421a19a06cee2e76fcd4bdbe0793f240b3cf094cebcceb91016103e2565b6107d5610c15565b6107df6000610d02565b565b6107e9610c15565b6001600160a01b03811661083f5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161038e565b61084a600182610d52565b6040516001600160a01b038216907ff68e73cec97f2d70aa641fb26e87a4383686e2efacb648f2165aeb02ac562ec590600090a250565b610889610cf2565b6104475760405162461bcd60e51b815260040161038e906110ca565b6108ad610c15565b6001600160a01b0381166109035760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161038e565b61090e600182610dce565b6040516001600160a01b038216907fed9c8ad8d5a0a66898ea49d2956929c93ae2e8bd50281b2ed897c5d1a6737e0b90600090a250565b6003546000906001600160a01b038381169116146104ed57506000919050565b60005b818110156104475761099a8383838181106109855761098561106b565b90506020020160208101906101609190610f3a565b806109a481611081565b915050610968565b6000806109b884610e50565b90506109d78161ffff1660009081526004602052604090205460ff1690565b156109e65760009150506109ec565b60019150505b9392505050565b6109fb610c15565b6001600160a01b03811660009081526002602052604090205460ff16610a635760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e74206973206e6f74207265676973746572656420796574604482015260640161038e565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f6a659bb87bb23efbdc295f8eed8ae8c4379bfb77660ced2ef0f3d7d26b05c6a691016103e2565b6000610ac18484846109ac565b610acd575060006109ec565b5060019392505050565b610adf610c15565b6001600160a01b038116610b445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161038e565b610b4d81610d02565b50565b610b58610c15565b6001600160a01b03811660009081526002602052604090205460ff1615610bc15760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e7420697320616c72656164792072656769737465726564604482015260640161038e565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527fd62c45e13ac30396aceb3ad37c89bd1ba9048032fe61679000e92eb93dbfd67d91016103e2565b6000546001600160a01b031633146107df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161038e565b60006001600160a01b038216610cd25760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b606482015260840161038e565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610cfd33610945565b905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610d5c8282610c6f565b15610da95760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015260640161038e565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610dd88282610c6f565b610e2e5760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b606482015260840161038e565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b600354604080516304d3863d60e21b815290516000926001600160a01b03169163134e18f49160048083019260209291908290030181865afa158015610e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebe9190611134565b604051637e42683b60e01b81526001600160a01b0384811660048301529190911690637e42683b90602401602060405180830381865afa158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fa9190611151565b61ffff81168114610b4d57600080fd5b600060208284031215610f4c57600080fd5b81356109ec81610f2a565b6001600160a01b0381168114610b4d57600080fd5b600060208284031215610f7e57600080fd5b81356109ec81610f57565b60008060208385031215610f9c57600080fd5b823567ffffffffffffffff80821115610fb457600080fd5b818501915085601f830112610fc857600080fd5b813581811115610fd757600080fd5b8660208260051b8501011115610fec57600080fd5b60209290920196919550909350505050565b6000806040838503121561101157600080fd5b823561101c81610f57565b946020939093013593505050565b60008060006060848603121561103f57600080fd5b833561104a81610f57565b9250602084013561105a81610f57565b929592945050506040919091013590565b634e487b7160e01b600052603260045260246000fd5b6000600182016110a157634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156110ba57600080fd5b815180151581146109ec57600080fd5b60208082526044908201527f6572726f72203a20746869732061646472657373206973206e6f74206120746f60408201527f6b656e20626f756e6420746f2074686520636f6d706c69616e636520636f6e746060820152631c9858dd60e21b608082015260a00190565b60006020828403121561114657600080fd5b81516109ec81610f57565b60006020828403121561116357600080fd5b81516109ec81610f2a56fea2646970667358221220b052308067ae1e29b3f8641f8e62f89dae4b3643701240b1e5bb3419d572c57264736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
