{
  "_format": "hh-sol-artifact-1",
  "contractName": "LZEndpointMock",
  "sourceName": "@layerzerolabs/solidity-examples/contracts/lzApp/mocks/LZEndpointMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_chainId",
          "type": "uint16"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "srcChainId",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "srcAddress",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "dstAddress",
          "type": "address"
        }
      ],
      "name": "PayloadCleared",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "srcChainId",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "srcAddress",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "dstAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "payload",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "reason",
          "type": "bytes"
        }
      ],
      "name": "PayloadStored",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "chainId",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "srcAddress",
          "type": "bytes"
        }
      ],
      "name": "UaForceResumeReceive",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        }
      ],
      "name": "ValueTransferFailed",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "blockNextMsg",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultAdapterParams",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_dstChainId",
          "type": "uint16"
        },
        {
          "internalType": "address",
          "name": "_userApplication",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_payload",
          "type": "bytes"
        },
        {
          "internalType": "bool",
          "name": "_payInZRO",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "_adapterParams",
          "type": "bytes"
        }
      ],
      "name": "estimateFees",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "nativeFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "zroFee",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_srcChainId",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_path",
          "type": "bytes"
        }
      ],
      "name": "forceResumeReceive",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getChainId",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "getConfig",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_chainID",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_path",
          "type": "bytes"
        }
      ],
      "name": "getInboundNonce",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_srcChainId",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_srcAddress",
          "type": "bytes"
        }
      ],
      "name": "getLengthOfQueue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_chainID",
          "type": "uint16"
        },
        {
          "internalType": "address",
          "name": "_srcAddress",
          "type": "address"
        }
      ],
      "name": "getOutboundNonce",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getReceiveLibraryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getReceiveVersion",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getSendLibraryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getSendVersion",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_srcChainId",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_path",
          "type": "bytes"
        }
      ],
      "name": "hasStoredPayload",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "inboundNonce",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isReceivingPayload",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isSendingPayload",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lzEndpointLookup",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockChainId",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "msgsToDeliver",
      "outputs": [
        {
          "internalType": "address",
          "name": "dstAddress",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        },
        {
          "internalType": "bytes",
          "name": "payload",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nextMsgBlocked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracleFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "outboundNonce",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "protocolFeeConfig",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "zroFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nativeBP",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_srcChainId",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_path",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_dstAddress",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_nonce",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_gasLimit",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_payload",
          "type": "bytes"
        }
      ],
      "name": "receivePayload",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "relayerFeeConfig",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "dstPriceRatio",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "dstGasPriceInWei",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "dstNativeAmtCap",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "baseGas",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "gasPerByte",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_srcChainId",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_path",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_payload",
          "type": "bytes"
        }
      ],
      "name": "retryPayload",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_chainId",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_path",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_payload",
          "type": "bytes"
        },
        {
          "internalType": "address payable",
          "name": "_refundAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_zroPaymentAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_adapterParams",
          "type": "bytes"
        }
      ],
      "name": "send",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "setConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_adapterParams",
          "type": "bytes"
        }
      ],
      "name": "setDefaultAdapterParams",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destAddr",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "lzEndpointAddr",
          "type": "address"
        }
      ],
      "name": "setDestLzEndpoint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_oracleFee",
          "type": "uint256"
        }
      ],
      "name": "setOracleFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_zroFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nativeBP",
          "type": "uint256"
        }
      ],
      "name": "setProtocolFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "name": "setReceiveVersion",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint128",
          "name": "_dstPriceRatio",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "_dstGasPriceInWei",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "_dstNativeAmtCap",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "_baseGas",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_gasPerByte",
          "type": "uint64"
        }
      ],
      "name": "setRelayerPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "name": "setSendVersion",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "storedPayload",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "payloadLength",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "dstAddress",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "payloadHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052600c805461ffff191661010117905534801561001f57600080fd5b506040516135f93803806135f983398101604081905261003e91610160565b6001805461ffff191661ffff83161781556040805160a0810182526402540be400808252602080830191909152678ac7230489e8000082840152606460608301526080909101929092527402540be400000000000000000000000002540be4006002557801000000000000006400000000000000008ac7230489e800006003558051808201909152670de0b6b3a76400008082526103e891909201819052600491909155600555662386f26fc100006006556100fc62030d40610110565b6007906101099082610285565b5050610393565b606060018260405160200161012692919061036d565b6040516020818303038152906040529050919050565b61ffff8116811461014c57600080fd5b50565b805161015a8161013c565b92915050565b60006020828403121561017557610175600080fd5b6000610181848461014f565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806101c957607f821691505b6020821081036101db576101db61019f565b50919050565b600061015a6101ed8381565b90565b6101f9836101e1565b815460001960089490940293841b1916921b91909117905550565b60006102218184846101f0565b505050565b8181101561024157610239600082610214565b600101610226565b5050565b601f821115610221576000818152602090206020601f8501048101602085101561026c5750805b61027e6020601f860104830182610226565b5050505050565b81516001600160401b0381111561029e5761029e610189565b6102a882546101b5565b6102b3828285610245565b6020601f8311600181146102e757600084156102cf5750858201515b600019600886021c1981166002860217865550610340565b600085815260208120601f198616915b8281101561031757888501518255602094850194600190920191016102f7565b868310156103335784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b600061015a8260f01b90565b61036161ffff8216610348565b82525050565b80610361565b60006103798285610354565b6002820191506103898284610367565b5060200192915050565b613257806103a26000396000f3fe60806040526004361061021a5760003560e01c80639924d33b11610123578063ca066b35116100ab578063e97a448a1161006f578063e97a448a14610796578063f5ecbdbc146107b2578063f9cd3ceb146107d2578063fbba623b146107e8578063fdc07c701461080857600080fd5b8063ca066b3514610716578063cbed8b9c14610737578063d23104f114610758578063da1a7c9a14610271578063db14f3051461077b57600080fd5b8063b6d9ef60116100f2578063b6d9ef6014610644578063c08f15a114610664578063c2fa4813146106ad578063c5803100146106cd578063c81b383a146106e057600080fd5b80639924d33b146105915780639c729da114610432578063aaff5f16146105e3578063b20864991461060357600080fd5b80633408e470116101a657806371ba2fd61161017557806371ba2fd61461043257806376a386dc1461045f5780637a145748146104da5780637f6df8e614610507578063907c5e7e1461053457600080fd5b80633408e470146103b95780633e0dd83e146103d257806340a7bb10146103f257806342d65a8d1461041257600080fd5b806310ddb137116101ed57806310ddb1371461025157806312a9ee6b146102cc578063240de277146102fb578063272bd384146103215780632c365e251461034357600080fd5b806307d3277f1461021f57806307e0db1714610251578063096568f6146102715780630eaf6ea61461029f575b600080fd5b34801561022b57600080fd5b5060045460055461023a919082565b604051610248929190611e23565b60405180910390f35b34801561025d57600080fd5b5061026f61026c366004611e5a565b50565b005b34801561027d57600080fd5b5061029261028c366004611ea0565b50600190565b6040516102489190611ecb565b3480156102ab57600080fd5b506102bf6102ba366004611f2a565b610828565b6040516102489190611f8d565b3480156102d857600080fd5b506102ec6102e73660046120a5565b61086e565b6040516102489392919061217f565b34801561030757600080fd5b5061026f6103163660046121b5565b600491909155600555565b34801561032d57600080fd5b5061033661096b565b60405161024891906121f2565b34801561034f57600080fd5b5061026f61035e366004612237565b6001600160801b03948516600160801b94861685021760025560038054939095166001600160c01b0319909316929092176001600160401b03918216909302929092176001600160c01b0316600160c01b9190921602179055565b3480156103c557600080fd5b5060015461ffff16610292565b3480156103de57600080fd5b506001546102bf9062010000900460ff1681565b3480156103fe57600080fd5b5061023a61040d3660046122c2565b6109f9565b34801561041e57600080fd5b5061026f61042d366004611f2a565b610af8565b34801561043e57600080fd5b5061045261044d366004611ea0565b503090565b6040516102489190612361565b34801561046b57600080fd5b506104cb61047a36600461236f565b600a6020908152600092835260409092208151808301840180519281529084019290930191909120915280546001909101546001600160401b03821691600160401b90046001600160a01b03169083565b604051610248939291906123bc565b3480156104e657600080fd5b506104fa6104f53660046123e4565b610be3565b6040516102489190612417565b34801561051357600080fd5b50610527610522366004611f2a565b610c1b565b6040516102489190612425565b34801561054057600080fd5b50600254600354610580916001600160801b0380821692600160801b92839004821692918116916001600160401b03908204811691600160c01b90041685565b604051610248959493929190612442565b34801561059d57600080fd5b506104fa6105ac36600461236f565b600860209081526000928352604090922081518083018401805192815290840192909301919091209152546001600160401b031681565b3480156105ef57600080fd5b5061026f6105fe36600461248e565b610c57565b34801561060f57600080fd5b506104fa61061e3660046123e4565b60096020908152600092835260408084209091529082529020546001600160401b031681565b34801561065057600080fd5b5061026f61065f36600461251c565b600655565b34801561067057600080fd5b5061026f61067f36600461253d565b6001600160a01b03918216600090815260208190526040902080546001600160a01b03191691909216179055565b3480156106b957600080fd5b5061026f6106c836600461255f565b610e0d565b61026f6106db366004612627565b6114d0565b3480156106ec57600080fd5b506104526106fb366004611ea0565b6000602081905290815260409020546001600160a01b031681565b34801561072257600080fd5b506102bf600c54610100900460ff1660021490565b34801561074357600080fd5b5061026f610752366004612705565b50505050565b34801561076457600080fd5b5061026f6001805462ff0000191662010000179055565b34801561078757600080fd5b506001546102929061ffff1681565b3480156107a257600080fd5b506102bf600c5460ff1660021490565b3480156107be57600080fd5b506103366107cd366004612783565b61191e565b3480156107de57600080fd5b5061052760065481565b3480156107f457600080fd5b5061026f6108033660046127db565b611936565b34801561081457600080fd5b506104fa610823366004611f2a565b611946565b61ffff83166000908152600a6020526040808220905182919061084e9086908690612828565b9081526040519081900360200190206001015415159150505b9392505050565b600b60209081526000848152604090208351808501830180519281529083019285019290922091528054829081106108a557600080fd5b6000918252602090912060029091020180546001820180546001600160a01b0383169650600160a01b9092046001600160401b031694509192506108e89061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546109149061284b565b80156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b5050505050905083565b600780546109789061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546109a49061284b565b80156109f15780601f106109c6576101008083540402835291602001916109f1565b820191906000526020600020905b8154815290600101906020018083116109d457829003601f168201915b505050505081565b600080600080845111610a965760078054610a139061284b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3f9061284b565b8015610a8c5780601f10610a6157610100808354040283529160200191610a8c565b820191906000526020600020905b815481529060010190602001808311610a6f57829003601f168201915b5050505050610a98565b835b90506000610aab8960018a8a518661198b565b90506000610abc8783600654611ae5565b905086610acc5780945084610ad1565b809350835b50600654610adf838761288d565b610ae9919061288d565b94505050509550959350505050565b61ffff83166000908152600a60205260408082209051610b1b9085908590612828565b9081526040519081900360200190206001810154909150610b575760405162461bcd60e51b8152600401610b4e906128d5565b60405180910390fd5b8054600160401b90046001600160a01b03163314610b875760405162461bcd60e51b8152600401610b4e90612919565b80546001600160e01b0319168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610bd09086908690869061294c565b60405180910390a1610752848484611b22565b61ffff821660009081526009602090815260408083206001600160a01b03851684529091529020546001600160401b03165b92915050565b61ffff83166000908152600b60205260408082209051610c3e9085908590612828565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600a60205260408082209051610c7a9087908790612828565b9081526040519081900360200190206001810154909150610cad5760405162461bcd60e51b8152600401610b4e906128d5565b80546001600160401b031682148015610ce0575080600101548383604051610cd6929190612828565b6040518091039020145b610cfc5760405162461bcd60e51b8152600401610b4e906129a1565b80546001600160e01b03198116825560006001830181905561ffff88168152600860205260408082209051600160401b9093046001600160a01b031692610d469089908990612828565b90815260405190819003602001812054621d356760e01b82526001600160401b031691506001600160a01b03831690621d356790610d92908b908b908b9087908c908c906004016129b1565b600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d8888888486604051610dfb959493929190612a00565b60405180910390a15050505050505050565b600c54610100900460ff16600114610e375760405162461bcd60e51b8152600401610b4e90612a81565b600c805461ff00191661020017905561ffff88166000908152600a60205260408082209051610e69908a908a90612828565b90815260200160405180910390209050600860008a61ffff1661ffff1681526020019081526020016000208888604051610ea4929190612828565b9081526040519081900360200190208054600090610eca906001600160401b0316612a91565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b0316856001600160401b031614610f1d5760405162461bcd60e51b8152600401610b4e90612aef565b6001810154156111e35761ffff89166000908152600b60205260408082209051610f4a908b908b90612828565b9081526020016040518091039020905060006040518060600160405280896001600160a01b03168152602001886001600160401b0316815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525082549091501561117457815460018181018455600084815260209081902084516002909402018054918501516001600160401b0316600160a01b026001600160e01b03199092166001600160a01b0390941693909317178255604083015183929182019061102b9082612b9f565b50505060005b825461103f90600190612c66565b8110156110f95782818154811061105857611058612c79565b906000526020600020906002020183826001611074919061288d565b8154811061108457611084612c79565b60009182526020909120825460029092020180546001600160a01b039092166001600160a01b031983168117825583546001600160e01b031990931617600160a01b928390046001600160401b03169092029190911781556001808201906110ee90840182612c9a565b505050600101611031565b50808260008154811061110e5761110e612c79565b600091825260209182902083516002909202018054928401516001600160401b0316600160a01b026001600160e01b03199093166001600160a01b03909216919091179190911781556040820151600182019061116b9082612b9f565b509050506111dc565b815460018181018455600084815260209081902084516002909402018054918501516001600160401b0316600160a01b026001600160e01b03199092166001600160a01b039094169390931717825560408301518392918201906111d89082612b9f565b5050505b50506114b6565b60015462010000900460ff1615611311576040518060600160405280848490506001600160401b03168152602001876001600160a01b031681526020018484604051611230929190612828565b604080519182900390912090915261ffff8b166000908152600a602052819020905161125f908b908b90612828565b90815260408051918290036020908101832084518154868401516001600160a01b0316600160401b026001600160e01b03199091166001600160401b03909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db916112f8918c918c918c918c918c918b918b9190612d63565b60405180910390a16001805462ff0000191690556114b6565b604051621d356760e01b81526001600160a01b03871690621d3567908690611347908d908d908d908c908b908b906004016129b1565b600060405180830381600088803b15801561136157600080fd5b5087f193505050508015611373575060015b6114b6573d8080156113a1576040519150601f19603f3d011682016040523d82523d6000602084013e6113a6565b606091505b506040518060600160405280858590506001600160401b03168152602001886001600160a01b0316815260200185856040516113e3929190612828565b604080519182900390912090915261ffff8c166000908152600a6020528190209051611412908c908c90612828565b90815260408051918290036020908101832084518154928601516001600160a01b0316600160401b026001600160e01b03199093166001600160401b03909116179190911781559201516001909201919091557f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db906114a0908c908c908c908c908c908b908b908a90612d63565b60405180910390a1506001805462ff0000191690555b5050600c805461ff00191661010017905550505050505050565b600c5460ff166001146114f55760405162461bcd60e51b8152600401610b4e90612e13565b600c805460ff1916600217905585516028146115235760405162461bcd60e51b8152600401610b4e90612e6c565b60148601516001600160a01b0380821660009081526020819052604090205416806115605760405162461bcd60e51b8152600401610b4e90612ed6565b6000808451116115fa57600780546115779061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546115a39061284b565b80156115f05780601f106115c5576101008083540402835291602001916115f0565b820191906000526020600020905b8154815290600101906020018083116115d357829003601f168201915b50505050506115fc565b835b9050600061164d8b338b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506001600160a01b038a161515866109f9565b509050803410156116705760405162461bcd60e51b8152600401610b4e90612f2c565b61ffff8b1660009081526009602090815260408083203384529091528120805482906116a4906001600160401b0316612a91565b91906101000a8154816001600160401b0302191690836001600160401b0316021790559050600082346116d79190612c66565b9050801561175d576000896001600160a01b0316826040516116f890612f3c565b60006040518083038185875af1925050503d8060008114611735576040519150601f19603f3d011682016040523d82523d6000602084013e61173a565b606091505b505090508061175b5760405162461bcd60e51b8152600401610b4e90612f7b565b505b600080600061176b87611d19565b91955093509150508115611816576000816001600160a01b03168360405161179290612f3c565b60006040518083038185875af1925050503d80600081146117cf576040519150601f19603f3d011682016040523d82523d6000602084013e6117d4565b606091505b50509050806118145760405183906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b505b6000338a60405160200161182b929190612fb3565b604051602081830303815290604052905060008f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050896001600160a01b031663c2fa4813600160009054906101000a900461ffff16848e8b8a876040518763ffffffff1660e01b81526004016118cb96959493929190612fd9565b600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b5050600c805460ff191660011790555050505050505050505050505050505050505050565b6040805160208101909152600081525b949350505050565b60076119428282612b9f565b5050565b61ffff831660009081526008602052604080822090516119699085908590612828565b908152604051908190036020019020546001600160401b031690509392505050565b60008060008061199a85611d19565b5092509250925060008361ffff166002036119e7576003546001600160801b03168211156119da5760405162461bcd60e51b8152600401610b4e90613077565b6119e4828261288d565b90505b600354600090611a08908590600160801b90046001600160401b031661288d565b600254611a259190600160801b90046001600160801b0316613087565b9050611a31818361288d565b6002549092506000906402540be40090611a54906001600160801b031685613087565b611a5e91906130bc565b6002546003549192506000916402540be400916001600160801b0380821692611aa192600160c01b9091046001600160401b031691600160801b909104166130d4565b611aab91906130d4565b611ab591906130fa565b6001600160801b03169050611aca818b613087565b611ad4908361288d565b9d9c50505050505050505050505050565b60008315611af65750600454610867565b60055461271090611b07848661288d565b611b119190613087565b611b1b91906130bc565b9050610867565b61ffff83166000908152600b60205260408082209051611b459085908590612828565b908152602001604051809103902090505b8054156107525780546000908290611b7090600190612c66565b81548110611b8057611b80612c79565b600091825260209182902060408051606081018252600290930290910180546001600160a01b03811684526001600160401b03600160a01b909104169383019390935260018301805492939291840191611bd99061284b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c059061284b565b8015611c525780601f10611c2757610100808354040283529160200191611c52565b820191906000526020600020905b815481529060010190602001808311611c3557829003601f168201915b505050505081525050905080600001516001600160a01b0316621d3567868686856020015186604001516040518663ffffffff1660e01b8152600401611c9c959493929190613117565b600060405180830381600087803b158015611cb657600080fd5b505af1158015611cca573d6000803e3d6000fd5b5050505081805480611cde57611cde613164565b60008281526020812060026000199093019283020180546001600160e01b031916815590611d0f6001830182611dcd565b5050905550611b56565b600080600080845160221480611d30575060428551115b611d4c5760405162461bcd60e51b8152600401610b4e906131a6565b60028501519350602285015192508361ffff1660011480611d7157508361ffff166002145b611d8d5760405162461bcd60e51b8152600401610b4e906131df565b60008311611dad5760405162461bcd60e51b8152600401610b4e90613211565b8361ffff16600203611dc6575050604283015160568401515b9193509193565b508054611dd99061284b565b6000825580601f10611de9575050565b601f01602090049060005260206000209081019061026c91905b80821115611e175760008155600101611e03565b5090565b805b82525050565b60408101611e318285611e1b565b6108676020830184611e1b565b61ffff81165b811461026c57600080fd5b8035610c1581611e3e565b600060208284031215611e6f57611e6f600080fd5b600061192e8484611e4f565b60006001600160a01b038216610c15565b611e4481611e7b565b8035610c1581611e8c565b600060208284031215611eb557611eb5600080fd5b600061192e8484611e95565b61ffff8116611e1d565b60208101610c158284611ec1565b60008083601f840112611eee57611eee600080fd5b5081356001600160401b03811115611f0857611f08600080fd5b602083019150836001820283011115611f2357611f23600080fd5b9250929050565b600080600060408486031215611f4257611f42600080fd5b6000611f4e8686611e4f565b93505060208401356001600160401b03811115611f6d57611f6d600080fd5b611f7986828701611ed9565b92509250509250925092565b801515611e1d565b60208101610c158284611f85565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715611fd657611fd6611f9b565b6040525050565b6000611fe860405190565b9050611ff48282611fb1565b919050565b60006001600160401b0382111561201257612012611f9b565b601f19601f83011660200192915050565b82818337506000910152565b600061204261203d84611ff9565b611fdd565b90508281526020810184848401111561205d5761205d600080fd5b612068848285612023565b509392505050565b600082601f83011261208457612084600080fd5b813561192e84826020860161202f565b80611e44565b8035610c1581612094565b6000806000606084860312156120bd576120bd600080fd5b60006120c98686611e4f565b93505060208401356001600160401b038111156120e8576120e8600080fd5b6120f486828701612070565b92505060406121058682870161209a565b9150509250925092565b611e1d81611e7b565b6001600160401b038116611e1d565b60005b8381101561214257818101518382015260200161212a565b50506000910152565b6000612155825190565b80845260208401935061216c818560208601612127565b601f19601f8201165b9093019392505050565b6060810161218d828661210f565b61219a6020830185612118565b81810360408301526121ac818461214b565b95945050505050565b600080604083850312156121cb576121cb600080fd5b60006121d7858561209a565b92505060206121e88582860161209a565b9150509250929050565b60208082528101610867818461214b565b6001600160801b038116611e44565b8035610c1581612203565b6001600160401b038116611e44565b8035610c158161221d565b600080600080600060a0868803121561225257612252600080fd5b600061225e8888612212565b955050602061226f88828901612212565b945050604061228088828901612212565b93505060606122918882890161222c565b92505060806122a28882890161222c565b9150509295509295909350565b801515611e44565b8035610c15816122af565b600080600080600060a086880312156122dd576122dd600080fd5b60006122e98888611e4f565b95505060206122fa88828901611e95565b94505060408601356001600160401b0381111561231957612319600080fd5b61232588828901612070565b9350506060612336888289016122b7565b92505060808601356001600160401b0381111561235557612355600080fd5b6122a288828901612070565b60208101610c15828461210f565b6000806040838503121561238557612385600080fd5b60006123918585611e4f565b92505060208301356001600160401b038111156123b0576123b0600080fd5b6121e885828601612070565b606081016123ca8286612118565b6123d7602083018561210f565b61192e6040830184611e1b565b600080604083850312156123fa576123fa600080fd5b60006124068585611e4f565b92505060206121e885828601611e95565b60208101610c158284612118565b60208101610c158284611e1b565b6001600160801b038116611e1d565b60a081016124508288612433565b61245d6020830187612433565b61246a6040830186612433565b6124776060830185612118565b6124846080830184612118565b9695505050505050565b6000806000806000606086880312156124a9576124a9600080fd5b60006124b58888611e4f565b95505060208601356001600160401b038111156124d4576124d4600080fd5b6124e088828901611ed9565b945094505060408601356001600160401b0381111561250157612501600080fd5b61250d88828901611ed9565b92509250509295509295909350565b60006020828403121561253157612531600080fd5b600061192e848461209a565b6000806040838503121561255357612553600080fd5b60006124068585611e95565b60008060008060008060008060c0898b03121561257e5761257e600080fd5b600061258a8b8b611e4f565b98505060208901356001600160401b038111156125a9576125a9600080fd5b6125b58b828c01611ed9565b975097505060406125c88b828c01611e95565b95505060606125d98b828c0161222c565b94505060806125ea8b828c0161209a565b93505060a08901356001600160401b0381111561260957612609600080fd5b6126158b828c01611ed9565b92509250509295985092959890939650565b600080600080600080600060c0888a03121561264557612645600080fd5b60006126518a8a611e4f565b97505060208801356001600160401b0381111561267057612670600080fd5b61267c8a828b01612070565b96505060408801356001600160401b0381111561269b5761269b600080fd5b6126a78a828b01611ed9565b955095505060606126ba8a828b01611e95565b93505060806126cb8a828b01611e95565b92505060a08801356001600160401b038111156126ea576126ea600080fd5b6126f68a828b01612070565b91505092959891949750929550565b6000806000806080858703121561271e5761271e600080fd5b600061272a8787611e4f565b945050602061273b87828801611e4f565b935050604061274c8782880161209a565b92505060608501356001600160401b0381111561276b5761276b600080fd5b61277787828801612070565b91505092959194509250565b6000806000806080858703121561279c5761279c600080fd5b60006127a88787611e4f565b94505060206127b987828801611e4f565b93505060406127ca87828801611e95565b92505060606127778782880161209a565b6000602082840312156127f0576127f0600080fd5b81356001600160401b0381111561280957612809600080fd5b61192e84828501612070565b6000612822838584612023565b50500190565b600061192e828486612815565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061285f57607f821691505b60208210810361287157612871612835565b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c1557610c15612877565b60208082527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f6164910190815260005b5060200190565b60208082528101610c15816128a0565b601d81526000602082017f4c617965725a65726f4d6f636b3a20696e76616c69642063616c6c6572000000815291506128ce565b60208082528101610c15816128e5565b818352600060208401935061293f838584612023565b601f19601f840116612175565b6040810161295a8286611ec1565b81810360208301526121ac818486612929565b601e81526000602082017f4c617965725a65726f4d6f636b3a20696e76616c6964207061796c6f61640000815291506128ce565b60208082528101610c158161296d565b608081016129bf8289611ec1565b81810360208301526129d2818789612929565b90506129e16040830186612118565b81810360608301526129f4818486612929565b98975050505050505050565b60808101612a0e8288611ec1565b8181036020830152612a21818688612929565b9050612a306040830185612118565b612484606083018461210f565b602481526000602082017f4c617965725a65726f4d6f636b3a206e6f2072656365697665207265656e7472815263616e637960e01b602082015291505b5060400190565b60208082528101610c1581612a3d565b6001600160401b0316600067fffffffffffffffe198201612ab457612ab4612877565b5060010190565b601a81526000602082017f4c617965725a65726f4d6f636b3a2077726f6e67206e6f6e6365000000000000815291506128ce565b60208082528101610c1581612abb565b6000610c15612b0b8381565b90565b612b1783612aff565b815460001960089490940293841b1916921b91909117905550565b6000612b3f818484612b0e565b505050565b8181101561194257612b57600082612b32565b600101612b44565b601f821115612b3f576000818152602090206020601f85010481016020851015612b865750805b612b986020601f860104830182612b44565b5050505050565b81516001600160401b03811115612bb857612bb8611f9b565b612bc2825461284b565b612bcd828285612b5f565b6020601f831160018114612c025760008415612be95750858201515b600019600886021c19811660028602175b865550612c5e565b600085815260208120601f198616915b82811015612c325788850151825560209485019460019092019101612c12565b86831015612c5157888501516000196008601f8a16021c1981165b8355505b6001600288020188555050505b505050505050565b81810381811115610c1557610c15612877565b634e487b7160e01b600052603260045260246000fd5b8054610c158161284b565b818103612ca5575050565b612cae82612c8f565b6001600160401b03811115612cc557612cc5611f9b565b612ccf825461284b565b612cda828285612b5f565b6000601f831160018114612d0a5760008415612be9575081860154600019600886021c1981166002860217612bfa565b600095865260208087208688529087209096601f19861691905b82811015612d445788850154825560019485019490910190602001612d24565b86831015612c5157888501546000196008601f8a16021c198116612c4d565b60c08101612d71828b611ec1565b8181036020830152612d8481898b612929565b9050612d93604083018861210f565b612da06060830187612118565b8181036080830152612db3818587612929565b905081810360a0830152612dc7818461214b565b9a9950505050505050505050565b602181526000602082017f4c617965725a65726f4d6f636b3a206e6f2073656e64207265656e7472616e638152607960f81b60208201529150612a7a565b60208082528101610c1581612dd5565b602c81526000602082017f4c617965725a65726f4d6f636b3a20696e636f72726563742072656d6f74652081526b616464726573732073697a6560a01b60208201529150612a7a565b60208082528101610c1581612e23565b603781526000602082017f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657281527f5a65726f20456e64706f696e74206e6f7420666f756e6400000000000000000060208201529150612a7a565b60208082528101610c1581612e7c565b602981526000602082017f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766581526820666f72206665657360b81b60208201529150612a7a565b60208082528101610c1581612ee6565b6000610c1582612b0b565b601f81526000602082017f4c617965725a65726f4d6f636b3a206661696c656420746f20726566756e6400815291506128ce565b60208082528101610c1581612f47565b6000610c158260601b90565b6000610c1582612f8b565b611e1d612fae82611e7b565b612f97565b6000612fbf8285612fa2565b601482019150612fcf8284612fa2565b5060140192915050565b60c08101612fe78289611ec1565b8181036020830152612ff9818861214b565b9050613008604083018761210f565b6130156060830186612118565b6130226080830185611e1b565b81810360a08301526129f4818461214b565b602681526000602082017f4c617965725a65726f4d6f636b3a206473744e6174697665416d7420746f6f2081526503630b933b2960d51b60208201529150612a7a565b60208082528101610c1581613034565b81810280821583820485141761309f5761309f612877565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000825b9250826130cf576130cf6130a6565b500490565b6001600160801b0391821691908116908282029081169081811461309f5761309f612877565b60006001600160801b03821691506001600160801b0383166130c0565b608081016131258288611ec1565b8181036020830152613138818688612929565b90506131476040830185612118565b8181036060830152613159818461214b565b979650505050505050565b634e487b7160e01b600052603160045260246000fd5b6015815260006020820174496e76616c69642061646170746572506172616d7360581b815291506128ce565b60208082528101610c158161317a565b6012815260006020820171556e737570706f727465642074785479706560701b815291506128ce565b60208082528101610c15816131b6565b600b81526000602082016a47617320746f6f206c6f7760a81b815291506128ce565b60208082528101610c15816131ef56fea2646970667358221220fca9b00680b4a1836f02c8657e12b713df7e33656c6c5bb08c5e30c86f054b8364736f6c63430008190033",
  "deployedBytecode": "0x60806040526004361061021a5760003560e01c80639924d33b11610123578063ca066b35116100ab578063e97a448a1161006f578063e97a448a14610796578063f5ecbdbc146107b2578063f9cd3ceb146107d2578063fbba623b146107e8578063fdc07c701461080857600080fd5b8063ca066b3514610716578063cbed8b9c14610737578063d23104f114610758578063da1a7c9a14610271578063db14f3051461077b57600080fd5b8063b6d9ef60116100f2578063b6d9ef6014610644578063c08f15a114610664578063c2fa4813146106ad578063c5803100146106cd578063c81b383a146106e057600080fd5b80639924d33b146105915780639c729da114610432578063aaff5f16146105e3578063b20864991461060357600080fd5b80633408e470116101a657806371ba2fd61161017557806371ba2fd61461043257806376a386dc1461045f5780637a145748146104da5780637f6df8e614610507578063907c5e7e1461053457600080fd5b80633408e470146103b95780633e0dd83e146103d257806340a7bb10146103f257806342d65a8d1461041257600080fd5b806310ddb137116101ed57806310ddb1371461025157806312a9ee6b146102cc578063240de277146102fb578063272bd384146103215780632c365e251461034357600080fd5b806307d3277f1461021f57806307e0db1714610251578063096568f6146102715780630eaf6ea61461029f575b600080fd5b34801561022b57600080fd5b5060045460055461023a919082565b604051610248929190611e23565b60405180910390f35b34801561025d57600080fd5b5061026f61026c366004611e5a565b50565b005b34801561027d57600080fd5b5061029261028c366004611ea0565b50600190565b6040516102489190611ecb565b3480156102ab57600080fd5b506102bf6102ba366004611f2a565b610828565b6040516102489190611f8d565b3480156102d857600080fd5b506102ec6102e73660046120a5565b61086e565b6040516102489392919061217f565b34801561030757600080fd5b5061026f6103163660046121b5565b600491909155600555565b34801561032d57600080fd5b5061033661096b565b60405161024891906121f2565b34801561034f57600080fd5b5061026f61035e366004612237565b6001600160801b03948516600160801b94861685021760025560038054939095166001600160c01b0319909316929092176001600160401b03918216909302929092176001600160c01b0316600160c01b9190921602179055565b3480156103c557600080fd5b5060015461ffff16610292565b3480156103de57600080fd5b506001546102bf9062010000900460ff1681565b3480156103fe57600080fd5b5061023a61040d3660046122c2565b6109f9565b34801561041e57600080fd5b5061026f61042d366004611f2a565b610af8565b34801561043e57600080fd5b5061045261044d366004611ea0565b503090565b6040516102489190612361565b34801561046b57600080fd5b506104cb61047a36600461236f565b600a6020908152600092835260409092208151808301840180519281529084019290930191909120915280546001909101546001600160401b03821691600160401b90046001600160a01b03169083565b604051610248939291906123bc565b3480156104e657600080fd5b506104fa6104f53660046123e4565b610be3565b6040516102489190612417565b34801561051357600080fd5b50610527610522366004611f2a565b610c1b565b6040516102489190612425565b34801561054057600080fd5b50600254600354610580916001600160801b0380821692600160801b92839004821692918116916001600160401b03908204811691600160c01b90041685565b604051610248959493929190612442565b34801561059d57600080fd5b506104fa6105ac36600461236f565b600860209081526000928352604090922081518083018401805192815290840192909301919091209152546001600160401b031681565b3480156105ef57600080fd5b5061026f6105fe36600461248e565b610c57565b34801561060f57600080fd5b506104fa61061e3660046123e4565b60096020908152600092835260408084209091529082529020546001600160401b031681565b34801561065057600080fd5b5061026f61065f36600461251c565b600655565b34801561067057600080fd5b5061026f61067f36600461253d565b6001600160a01b03918216600090815260208190526040902080546001600160a01b03191691909216179055565b3480156106b957600080fd5b5061026f6106c836600461255f565b610e0d565b61026f6106db366004612627565b6114d0565b3480156106ec57600080fd5b506104526106fb366004611ea0565b6000602081905290815260409020546001600160a01b031681565b34801561072257600080fd5b506102bf600c54610100900460ff1660021490565b34801561074357600080fd5b5061026f610752366004612705565b50505050565b34801561076457600080fd5b5061026f6001805462ff0000191662010000179055565b34801561078757600080fd5b506001546102929061ffff1681565b3480156107a257600080fd5b506102bf600c5460ff1660021490565b3480156107be57600080fd5b506103366107cd366004612783565b61191e565b3480156107de57600080fd5b5061052760065481565b3480156107f457600080fd5b5061026f6108033660046127db565b611936565b34801561081457600080fd5b506104fa610823366004611f2a565b611946565b61ffff83166000908152600a6020526040808220905182919061084e9086908690612828565b9081526040519081900360200190206001015415159150505b9392505050565b600b60209081526000848152604090208351808501830180519281529083019285019290922091528054829081106108a557600080fd5b6000918252602090912060029091020180546001820180546001600160a01b0383169650600160a01b9092046001600160401b031694509192506108e89061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546109149061284b565b80156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b5050505050905083565b600780546109789061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546109a49061284b565b80156109f15780601f106109c6576101008083540402835291602001916109f1565b820191906000526020600020905b8154815290600101906020018083116109d457829003601f168201915b505050505081565b600080600080845111610a965760078054610a139061284b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3f9061284b565b8015610a8c5780601f10610a6157610100808354040283529160200191610a8c565b820191906000526020600020905b815481529060010190602001808311610a6f57829003601f168201915b5050505050610a98565b835b90506000610aab8960018a8a518661198b565b90506000610abc8783600654611ae5565b905086610acc5780945084610ad1565b809350835b50600654610adf838761288d565b610ae9919061288d565b94505050509550959350505050565b61ffff83166000908152600a60205260408082209051610b1b9085908590612828565b9081526040519081900360200190206001810154909150610b575760405162461bcd60e51b8152600401610b4e906128d5565b60405180910390fd5b8054600160401b90046001600160a01b03163314610b875760405162461bcd60e51b8152600401610b4e90612919565b80546001600160e01b0319168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610bd09086908690869061294c565b60405180910390a1610752848484611b22565b61ffff821660009081526009602090815260408083206001600160a01b03851684529091529020546001600160401b03165b92915050565b61ffff83166000908152600b60205260408082209051610c3e9085908590612828565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600a60205260408082209051610c7a9087908790612828565b9081526040519081900360200190206001810154909150610cad5760405162461bcd60e51b8152600401610b4e906128d5565b80546001600160401b031682148015610ce0575080600101548383604051610cd6929190612828565b6040518091039020145b610cfc5760405162461bcd60e51b8152600401610b4e906129a1565b80546001600160e01b03198116825560006001830181905561ffff88168152600860205260408082209051600160401b9093046001600160a01b031692610d469089908990612828565b90815260405190819003602001812054621d356760e01b82526001600160401b031691506001600160a01b03831690621d356790610d92908b908b908b9087908c908c906004016129b1565b600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d8888888486604051610dfb959493929190612a00565b60405180910390a15050505050505050565b600c54610100900460ff16600114610e375760405162461bcd60e51b8152600401610b4e90612a81565b600c805461ff00191661020017905561ffff88166000908152600a60205260408082209051610e69908a908a90612828565b90815260200160405180910390209050600860008a61ffff1661ffff1681526020019081526020016000208888604051610ea4929190612828565b9081526040519081900360200190208054600090610eca906001600160401b0316612a91565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b0316856001600160401b031614610f1d5760405162461bcd60e51b8152600401610b4e90612aef565b6001810154156111e35761ffff89166000908152600b60205260408082209051610f4a908b908b90612828565b9081526020016040518091039020905060006040518060600160405280896001600160a01b03168152602001886001600160401b0316815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525082549091501561117457815460018181018455600084815260209081902084516002909402018054918501516001600160401b0316600160a01b026001600160e01b03199092166001600160a01b0390941693909317178255604083015183929182019061102b9082612b9f565b50505060005b825461103f90600190612c66565b8110156110f95782818154811061105857611058612c79565b906000526020600020906002020183826001611074919061288d565b8154811061108457611084612c79565b60009182526020909120825460029092020180546001600160a01b039092166001600160a01b031983168117825583546001600160e01b031990931617600160a01b928390046001600160401b03169092029190911781556001808201906110ee90840182612c9a565b505050600101611031565b50808260008154811061110e5761110e612c79565b600091825260209182902083516002909202018054928401516001600160401b0316600160a01b026001600160e01b03199093166001600160a01b03909216919091179190911781556040820151600182019061116b9082612b9f565b509050506111dc565b815460018181018455600084815260209081902084516002909402018054918501516001600160401b0316600160a01b026001600160e01b03199092166001600160a01b039094169390931717825560408301518392918201906111d89082612b9f565b5050505b50506114b6565b60015462010000900460ff1615611311576040518060600160405280848490506001600160401b03168152602001876001600160a01b031681526020018484604051611230929190612828565b604080519182900390912090915261ffff8b166000908152600a602052819020905161125f908b908b90612828565b90815260408051918290036020908101832084518154868401516001600160a01b0316600160401b026001600160e01b03199091166001600160401b03909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db916112f8918c918c918c918c918c918b918b9190612d63565b60405180910390a16001805462ff0000191690556114b6565b604051621d356760e01b81526001600160a01b03871690621d3567908690611347908d908d908d908c908b908b906004016129b1565b600060405180830381600088803b15801561136157600080fd5b5087f193505050508015611373575060015b6114b6573d8080156113a1576040519150601f19603f3d011682016040523d82523d6000602084013e6113a6565b606091505b506040518060600160405280858590506001600160401b03168152602001886001600160a01b0316815260200185856040516113e3929190612828565b604080519182900390912090915261ffff8c166000908152600a6020528190209051611412908c908c90612828565b90815260408051918290036020908101832084518154928601516001600160a01b0316600160401b026001600160e01b03199093166001600160401b03909116179190911781559201516001909201919091557f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db906114a0908c908c908c908c908c908b908b908a90612d63565b60405180910390a1506001805462ff0000191690555b5050600c805461ff00191661010017905550505050505050565b600c5460ff166001146114f55760405162461bcd60e51b8152600401610b4e90612e13565b600c805460ff1916600217905585516028146115235760405162461bcd60e51b8152600401610b4e90612e6c565b60148601516001600160a01b0380821660009081526020819052604090205416806115605760405162461bcd60e51b8152600401610b4e90612ed6565b6000808451116115fa57600780546115779061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546115a39061284b565b80156115f05780601f106115c5576101008083540402835291602001916115f0565b820191906000526020600020905b8154815290600101906020018083116115d357829003601f168201915b50505050506115fc565b835b9050600061164d8b338b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506001600160a01b038a161515866109f9565b509050803410156116705760405162461bcd60e51b8152600401610b4e90612f2c565b61ffff8b1660009081526009602090815260408083203384529091528120805482906116a4906001600160401b0316612a91565b91906101000a8154816001600160401b0302191690836001600160401b0316021790559050600082346116d79190612c66565b9050801561175d576000896001600160a01b0316826040516116f890612f3c565b60006040518083038185875af1925050503d8060008114611735576040519150601f19603f3d011682016040523d82523d6000602084013e61173a565b606091505b505090508061175b5760405162461bcd60e51b8152600401610b4e90612f7b565b505b600080600061176b87611d19565b91955093509150508115611816576000816001600160a01b03168360405161179290612f3c565b60006040518083038185875af1925050503d80600081146117cf576040519150601f19603f3d011682016040523d82523d6000602084013e6117d4565b606091505b50509050806118145760405183906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b505b6000338a60405160200161182b929190612fb3565b604051602081830303815290604052905060008f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050896001600160a01b031663c2fa4813600160009054906101000a900461ffff16848e8b8a876040518763ffffffff1660e01b81526004016118cb96959493929190612fd9565b600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b5050600c805460ff191660011790555050505050505050505050505050505050505050565b6040805160208101909152600081525b949350505050565b60076119428282612b9f565b5050565b61ffff831660009081526008602052604080822090516119699085908590612828565b908152604051908190036020019020546001600160401b031690509392505050565b60008060008061199a85611d19565b5092509250925060008361ffff166002036119e7576003546001600160801b03168211156119da5760405162461bcd60e51b8152600401610b4e90613077565b6119e4828261288d565b90505b600354600090611a08908590600160801b90046001600160401b031661288d565b600254611a259190600160801b90046001600160801b0316613087565b9050611a31818361288d565b6002549092506000906402540be40090611a54906001600160801b031685613087565b611a5e91906130bc565b6002546003549192506000916402540be400916001600160801b0380821692611aa192600160c01b9091046001600160401b031691600160801b909104166130d4565b611aab91906130d4565b611ab591906130fa565b6001600160801b03169050611aca818b613087565b611ad4908361288d565b9d9c50505050505050505050505050565b60008315611af65750600454610867565b60055461271090611b07848661288d565b611b119190613087565b611b1b91906130bc565b9050610867565b61ffff83166000908152600b60205260408082209051611b459085908590612828565b908152602001604051809103902090505b8054156107525780546000908290611b7090600190612c66565b81548110611b8057611b80612c79565b600091825260209182902060408051606081018252600290930290910180546001600160a01b03811684526001600160401b03600160a01b909104169383019390935260018301805492939291840191611bd99061284b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c059061284b565b8015611c525780601f10611c2757610100808354040283529160200191611c52565b820191906000526020600020905b815481529060010190602001808311611c3557829003601f168201915b505050505081525050905080600001516001600160a01b0316621d3567868686856020015186604001516040518663ffffffff1660e01b8152600401611c9c959493929190613117565b600060405180830381600087803b158015611cb657600080fd5b505af1158015611cca573d6000803e3d6000fd5b5050505081805480611cde57611cde613164565b60008281526020812060026000199093019283020180546001600160e01b031916815590611d0f6001830182611dcd565b5050905550611b56565b600080600080845160221480611d30575060428551115b611d4c5760405162461bcd60e51b8152600401610b4e906131a6565b60028501519350602285015192508361ffff1660011480611d7157508361ffff166002145b611d8d5760405162461bcd60e51b8152600401610b4e906131df565b60008311611dad5760405162461bcd60e51b8152600401610b4e90613211565b8361ffff16600203611dc6575050604283015160568401515b9193509193565b508054611dd99061284b565b6000825580601f10611de9575050565b601f01602090049060005260206000209081019061026c91905b80821115611e175760008155600101611e03565b5090565b805b82525050565b60408101611e318285611e1b565b6108676020830184611e1b565b61ffff81165b811461026c57600080fd5b8035610c1581611e3e565b600060208284031215611e6f57611e6f600080fd5b600061192e8484611e4f565b60006001600160a01b038216610c15565b611e4481611e7b565b8035610c1581611e8c565b600060208284031215611eb557611eb5600080fd5b600061192e8484611e95565b61ffff8116611e1d565b60208101610c158284611ec1565b60008083601f840112611eee57611eee600080fd5b5081356001600160401b03811115611f0857611f08600080fd5b602083019150836001820283011115611f2357611f23600080fd5b9250929050565b600080600060408486031215611f4257611f42600080fd5b6000611f4e8686611e4f565b93505060208401356001600160401b03811115611f6d57611f6d600080fd5b611f7986828701611ed9565b92509250509250925092565b801515611e1d565b60208101610c158284611f85565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715611fd657611fd6611f9b565b6040525050565b6000611fe860405190565b9050611ff48282611fb1565b919050565b60006001600160401b0382111561201257612012611f9b565b601f19601f83011660200192915050565b82818337506000910152565b600061204261203d84611ff9565b611fdd565b90508281526020810184848401111561205d5761205d600080fd5b612068848285612023565b509392505050565b600082601f83011261208457612084600080fd5b813561192e84826020860161202f565b80611e44565b8035610c1581612094565b6000806000606084860312156120bd576120bd600080fd5b60006120c98686611e4f565b93505060208401356001600160401b038111156120e8576120e8600080fd5b6120f486828701612070565b92505060406121058682870161209a565b9150509250925092565b611e1d81611e7b565b6001600160401b038116611e1d565b60005b8381101561214257818101518382015260200161212a565b50506000910152565b6000612155825190565b80845260208401935061216c818560208601612127565b601f19601f8201165b9093019392505050565b6060810161218d828661210f565b61219a6020830185612118565b81810360408301526121ac818461214b565b95945050505050565b600080604083850312156121cb576121cb600080fd5b60006121d7858561209a565b92505060206121e88582860161209a565b9150509250929050565b60208082528101610867818461214b565b6001600160801b038116611e44565b8035610c1581612203565b6001600160401b038116611e44565b8035610c158161221d565b600080600080600060a0868803121561225257612252600080fd5b600061225e8888612212565b955050602061226f88828901612212565b945050604061228088828901612212565b93505060606122918882890161222c565b92505060806122a28882890161222c565b9150509295509295909350565b801515611e44565b8035610c15816122af565b600080600080600060a086880312156122dd576122dd600080fd5b60006122e98888611e4f565b95505060206122fa88828901611e95565b94505060408601356001600160401b0381111561231957612319600080fd5b61232588828901612070565b9350506060612336888289016122b7565b92505060808601356001600160401b0381111561235557612355600080fd5b6122a288828901612070565b60208101610c15828461210f565b6000806040838503121561238557612385600080fd5b60006123918585611e4f565b92505060208301356001600160401b038111156123b0576123b0600080fd5b6121e885828601612070565b606081016123ca8286612118565b6123d7602083018561210f565b61192e6040830184611e1b565b600080604083850312156123fa576123fa600080fd5b60006124068585611e4f565b92505060206121e885828601611e95565b60208101610c158284612118565b60208101610c158284611e1b565b6001600160801b038116611e1d565b60a081016124508288612433565b61245d6020830187612433565b61246a6040830186612433565b6124776060830185612118565b6124846080830184612118565b9695505050505050565b6000806000806000606086880312156124a9576124a9600080fd5b60006124b58888611e4f565b95505060208601356001600160401b038111156124d4576124d4600080fd5b6124e088828901611ed9565b945094505060408601356001600160401b0381111561250157612501600080fd5b61250d88828901611ed9565b92509250509295509295909350565b60006020828403121561253157612531600080fd5b600061192e848461209a565b6000806040838503121561255357612553600080fd5b60006124068585611e95565b60008060008060008060008060c0898b03121561257e5761257e600080fd5b600061258a8b8b611e4f565b98505060208901356001600160401b038111156125a9576125a9600080fd5b6125b58b828c01611ed9565b975097505060406125c88b828c01611e95565b95505060606125d98b828c0161222c565b94505060806125ea8b828c0161209a565b93505060a08901356001600160401b0381111561260957612609600080fd5b6126158b828c01611ed9565b92509250509295985092959890939650565b600080600080600080600060c0888a03121561264557612645600080fd5b60006126518a8a611e4f565b97505060208801356001600160401b0381111561267057612670600080fd5b61267c8a828b01612070565b96505060408801356001600160401b0381111561269b5761269b600080fd5b6126a78a828b01611ed9565b955095505060606126ba8a828b01611e95565b93505060806126cb8a828b01611e95565b92505060a08801356001600160401b038111156126ea576126ea600080fd5b6126f68a828b01612070565b91505092959891949750929550565b6000806000806080858703121561271e5761271e600080fd5b600061272a8787611e4f565b945050602061273b87828801611e4f565b935050604061274c8782880161209a565b92505060608501356001600160401b0381111561276b5761276b600080fd5b61277787828801612070565b91505092959194509250565b6000806000806080858703121561279c5761279c600080fd5b60006127a88787611e4f565b94505060206127b987828801611e4f565b93505060406127ca87828801611e95565b92505060606127778782880161209a565b6000602082840312156127f0576127f0600080fd5b81356001600160401b0381111561280957612809600080fd5b61192e84828501612070565b6000612822838584612023565b50500190565b600061192e828486612815565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061285f57607f821691505b60208210810361287157612871612835565b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c1557610c15612877565b60208082527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f6164910190815260005b5060200190565b60208082528101610c15816128a0565b601d81526000602082017f4c617965725a65726f4d6f636b3a20696e76616c69642063616c6c6572000000815291506128ce565b60208082528101610c15816128e5565b818352600060208401935061293f838584612023565b601f19601f840116612175565b6040810161295a8286611ec1565b81810360208301526121ac818486612929565b601e81526000602082017f4c617965725a65726f4d6f636b3a20696e76616c6964207061796c6f61640000815291506128ce565b60208082528101610c158161296d565b608081016129bf8289611ec1565b81810360208301526129d2818789612929565b90506129e16040830186612118565b81810360608301526129f4818486612929565b98975050505050505050565b60808101612a0e8288611ec1565b8181036020830152612a21818688612929565b9050612a306040830185612118565b612484606083018461210f565b602481526000602082017f4c617965725a65726f4d6f636b3a206e6f2072656365697665207265656e7472815263616e637960e01b602082015291505b5060400190565b60208082528101610c1581612a3d565b6001600160401b0316600067fffffffffffffffe198201612ab457612ab4612877565b5060010190565b601a81526000602082017f4c617965725a65726f4d6f636b3a2077726f6e67206e6f6e6365000000000000815291506128ce565b60208082528101610c1581612abb565b6000610c15612b0b8381565b90565b612b1783612aff565b815460001960089490940293841b1916921b91909117905550565b6000612b3f818484612b0e565b505050565b8181101561194257612b57600082612b32565b600101612b44565b601f821115612b3f576000818152602090206020601f85010481016020851015612b865750805b612b986020601f860104830182612b44565b5050505050565b81516001600160401b03811115612bb857612bb8611f9b565b612bc2825461284b565b612bcd828285612b5f565b6020601f831160018114612c025760008415612be95750858201515b600019600886021c19811660028602175b865550612c5e565b600085815260208120601f198616915b82811015612c325788850151825560209485019460019092019101612c12565b86831015612c5157888501516000196008601f8a16021c1981165b8355505b6001600288020188555050505b505050505050565b81810381811115610c1557610c15612877565b634e487b7160e01b600052603260045260246000fd5b8054610c158161284b565b818103612ca5575050565b612cae82612c8f565b6001600160401b03811115612cc557612cc5611f9b565b612ccf825461284b565b612cda828285612b5f565b6000601f831160018114612d0a5760008415612be9575081860154600019600886021c1981166002860217612bfa565b600095865260208087208688529087209096601f19861691905b82811015612d445788850154825560019485019490910190602001612d24565b86831015612c5157888501546000196008601f8a16021c198116612c4d565b60c08101612d71828b611ec1565b8181036020830152612d8481898b612929565b9050612d93604083018861210f565b612da06060830187612118565b8181036080830152612db3818587612929565b905081810360a0830152612dc7818461214b565b9a9950505050505050505050565b602181526000602082017f4c617965725a65726f4d6f636b3a206e6f2073656e64207265656e7472616e638152607960f81b60208201529150612a7a565b60208082528101610c1581612dd5565b602c81526000602082017f4c617965725a65726f4d6f636b3a20696e636f72726563742072656d6f74652081526b616464726573732073697a6560a01b60208201529150612a7a565b60208082528101610c1581612e23565b603781526000602082017f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657281527f5a65726f20456e64706f696e74206e6f7420666f756e6400000000000000000060208201529150612a7a565b60208082528101610c1581612e7c565b602981526000602082017f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766581526820666f72206665657360b81b60208201529150612a7a565b60208082528101610c1581612ee6565b6000610c1582612b0b565b601f81526000602082017f4c617965725a65726f4d6f636b3a206661696c656420746f20726566756e6400815291506128ce565b60208082528101610c1581612f47565b6000610c158260601b90565b6000610c1582612f8b565b611e1d612fae82611e7b565b612f97565b6000612fbf8285612fa2565b601482019150612fcf8284612fa2565b5060140192915050565b60c08101612fe78289611ec1565b8181036020830152612ff9818861214b565b9050613008604083018761210f565b6130156060830186612118565b6130226080830185611e1b565b81810360a08301526129f4818461214b565b602681526000602082017f4c617965725a65726f4d6f636b3a206473744e6174697665416d7420746f6f2081526503630b933b2960d51b60208201529150612a7a565b60208082528101610c1581613034565b81810280821583820485141761309f5761309f612877565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000825b9250826130cf576130cf6130a6565b500490565b6001600160801b0391821691908116908282029081169081811461309f5761309f612877565b60006001600160801b03821691506001600160801b0383166130c0565b608081016131258288611ec1565b8181036020830152613138818688612929565b90506131476040830185612118565b8181036060830152613159818461214b565b979650505050505050565b634e487b7160e01b600052603160045260246000fd5b6015815260006020820174496e76616c69642061646170746572506172616d7360581b815291506128ce565b60208082528101610c158161317a565b6012815260006020820171556e737570706f727465642074785479706560701b815291506128ce565b60208082528101610c15816131b6565b600b81526000602082016a47617320746f6f206c6f7760a81b815291506128ce565b60208082528101610c15816131ef56fea2646970667358221220fca9b00680b4a1836f02c8657e12b713df7e33656c6c5bb08c5e30c86f054b8364736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
