UNPKG

@animoca/ethereum-contracts-sale

Version:
941 lines 102 kB
{
  "_format": "hh-sol-artifact-1",
  "contractName": "UniswapSwapSaleMock",
  "sourceName": "contracts/mocks/sale/UniswapSwapSaleMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "payoutWallet_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "skusCapacity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokensPerSkuCapacity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "referenceToken",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Router",
          "name": "uniswapV2Router",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "names",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "values",
          "type": "bytes32[]"
        }
      ],
      "name": "MagicValues",
      "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": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "payoutWallet_",
          "type": "address"
        }
      ],
      "name": "PayoutWalletSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "purchaser",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extData",
          "type": "bytes"
        }
      ],
      "name": "Purchase",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxQuantityPerPurchase",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "notificationsReceiver",
          "type": "address"
        }
      ],
      "name": "SkuCreation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "name": "SkuPricingUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Started",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "fromAmount",
          "type": "uint256"
        }
      ],
      "name": "UnderscoreSwapResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IUniswapV2Router",
          "name": "uniswapV2Router",
          "type": "address"
        }
      ],
      "name": "UniswapV2RouterSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "PRICE_CONVERT_VIA_ORACLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRICE_SWAP_VIA_ORACLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SUPPLY_UNLIMITED",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TOKEN_ETH",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "addEth",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fromToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "toToken",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "callUnderscoreConversionRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fromToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "toToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "toAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "callUnderscoreEstimateSwap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "fromAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "pricingData",
          "type": "bytes32[]"
        }
      ],
      "name": "callUnderscorePayment",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "callUnderscorePricing",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "pricingData",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fromToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "fromAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "toToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "toAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "callUnderscoreSwap",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "callUnderscoreValidation",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "conversionRates",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "rates",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxQuantityPerPurchase",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "notificationsReceiver",
          "type": "address"
        }
      ],
      "name": "createSku",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "estimatePurchase",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "pricingData",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "getReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "reserveA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveB",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        }
      ],
      "name": "getSkuInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "remainingSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxQuantityPerPurchase",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "notificationsReceiver",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSkus",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "skus",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "payoutWallet",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "purchaseFor",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "referenceToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "payoutWallet_",
          "type": "address"
        }
      ],
      "name": "setPayoutWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "referenceAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "swapRates",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "rates",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "uniswapV2Router",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Router",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "name": "updateSkuPricing",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b506040516200539b3803806200539b833981810160405260a08110156200003757600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b031916339081178255935195969495929493919287928792879287928792839288928892889288928692869286928692869286928692859285928592600192869183918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03811662000123576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f8559181900360200190a150506003805460ff1916911515919091179055608082905260a081905260408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833750508351919250680a89e968a9cbe8aa8960bb1b9173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee915084906000906200020857fe5b60200260200101836000815181106200021d57fe5b602002602001018281525082815250505060001960001b6f14d55414131657d5539312535255115160821b90836001815181106200025757fe5b60200260200101836001815181106200026c57fe5b60200260200101828152508281525050506000805160206200537b8339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015620002d5578181015183820152602001620002bb565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000316578181015183820152602001620002fc565b5050505090500194505050505060405180910390a15050600780546001600160a01b0319166001600160a01b0389161790555060009450600193508492506200035d915050565b5060405190808252806020026020018201604052801562000388578160200160208202803683370190505b50604080516001808252818301909252919250600091906020808301908036833701905050905060001960001b7f50524943455f434f4e564552545f5649415f4f5241434c4500000000000000009083600081518110620003e557fe5b6020026020010183600081518110620003fa57fe5b60200260200101828152508281525050506000805160206200537b8339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156200046357818101518382015260200162000449565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015620004a45781810151838201526020016200048a565b5050505090500194505050505060405180910390a1505050505050600060016001600160401b0381118015620004d957600080fd5b5060405190808252806020026020018201604052801562000504578160200160208202803683370190505b506040805160018082528183019092529192506000919060208083019080368337505083519192507f50524943455f535741505f5649415f4f5241434c45000000000000000000000091600119915084906000906200055f57fe5b60200260200101836000815181106200057457fe5b60200260200101828152508281525050506000805160206200537b8339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015620005dd578181015183820152602001620005c3565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156200061e57818101518382015260200162000604565b5050505090500194505050505060405180910390a15050505050506200064a816200065b60201b60201c565b5050505050505050505050620006af565b600880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffe70995e26c62b71bbd53a5b9e09215c42e2006fad72ba845051faa8de1510ba9181900360200190a150565b60805160a051614ca8620006d3600039806132de5250806120115250614ca86000f3fe6080604052600436106101dc5760003560e01c80638488bb4e11610102578063a963b25711610095578063c7b778db11610064578063c7b778db14610ce5578063d52bb6f414610db4578063f21f537d14610e08578063f2fde38b14610e1d57610252565b8063a963b25714610b60578063bda4c5ab14610bf5578063be9a655514610cc8578063c2ac3aff14610cdd57610252565b80639865bcc8116100d15780639865bcc814610a1f5780639e04954514610a1f578063a1e1690814610a34578063a541f89c14610aca57610252565b80638488bb4e146108685780638ce507eb1461087d5780638da5cb5b1461096857806397309b441461097d57610252565b806356c1476e1161017a5780635e6e9f70116101495780635e6e9f701461068057806361bd3851146107bb5780636b8f9c43146108205780638456cb591461085357610252565b806356c1476e1461058b578063579f2c771461062d5780635c4fafc7146106425780635c975abb1461065757610252565b80631694505e116101b65780631694505e146104345780632a8a45bc146104495780632c87927b146105315780633f4ba83a1461057657610252565b80631265b651146102575780631323b06614610288578063151229f71461038557610252565b36610252576008546001600160a01b03166101f5610e50565b6001600160a01b031614610250576040805162461bcd60e51b815260206004820152601860248201527f53616c653a20496e76616c6964204554482073656e6465720000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561026357600080fd5b5061026c610e54565b604080516001600160a01b039092168252519081900360200190f35b34801561029457600080fd5b5061032a600480360360a08110156102ab57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156102eb57600080fd5b8201836020820111156102fd57600080fd5b8035906020019184600183028401116401000000008311171561031f57600080fd5b509092509050610e63565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610370578181015183820152602001610358565b50505050905001935050505060405180910390f35b34801561039157600080fd5b50610422600480360360808110156103a857600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103e357600080fd5b8201836020820111156103f557600080fd5b8035906020019184600183028401116401000000008311171561041757600080fd5b509092509050610f58565b60408051918252519081900360200190f35b34801561044057600080fd5b5061026c610fa6565b34801561045557600080fd5b506104736004803603602081101561046c57600080fd5b5035610fb5565b60405180878152602001868152602001858152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104d85781810151838201526020016104c0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105175781810151838201526020016104ff565b505050509050019850505050505050505060405180910390f35b34801561053d57600080fd5b506102506004803603608081101561055457600080fd5b50803590602081013590604081013590606001356001600160a01b031661115a565b34801561058257600080fd5b5061025061116c565b34801561059757600080fd5b50610250600480360360a08110156105ae57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105ee57600080fd5b82018360208201111561060057600080fd5b8035906020019184600183028401116401000000008311171561062257600080fd5b5090925090506111da565b34801561063957600080fd5b50610422611264565b34801561064e57600080fd5b5061026c61126a565b34801561066357600080fd5b5061066c611282565b604080519115158252519081900360200190f35b34801561068c57600080fd5b50610250600480360360608110156106a357600080fd5b813591908101906040810160208201356401000000008111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460208302840111640100000000831117156106f957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561074957600080fd5b82018360208201111561075b57600080fd5b8035906020019184602083028401116401000000008311171561077d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061128b945050505050565b3480156107c757600080fd5b506107d0611468565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561080c5781810151838201526020016107f4565b505050509050019250505060405180910390f35b34801561082c57600080fd5b506102506004803603602081101561084357600080fd5b50356001600160a01b03166114c3565b34801561085f57600080fd5b50610250611590565b34801561087457600080fd5b5061026c6115f7565b610250600480360360e081101561089357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156108d357600080fd5b8201836020820111156108e557600080fd5b8035906020019184600183028401116401000000008311171561090757600080fd5b9193909282359260408101906020013564010000000081111561092957600080fd5b82018360208201111561093b57600080fd5b8035906020019184602083028401116401000000008311171561095d57600080fd5b509092509050611606565b34801561097457600080fd5b5061026c6116d0565b34801561098957600080fd5b5061032a600480360360a08110156109a057600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156109e057600080fd5b8201836020820111156109f257600080fd5b80359060200191846001830284011164010000000083111715610a1457600080fd5b5090925090506116df565b348015610a2b57600080fd5b5061042261177e565b348015610a4057600080fd5b5061042260048036036060811015610a5757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135640100000000811115610a8b57600080fd5b820183602082011115610a9d57600080fd5b80359060200191846001830284011164010000000083111715610abf57600080fd5b509092509050611784565b610250600480360360a0811015610ae057600080fd5b6001600160a01b0382358116926020810135926040820135909216916060820135919081019060a081016080820135640100000000811115610b2157600080fd5b820183602082011115610b3357600080fd5b80359060200191846001830284011164010000000083111715610b5557600080fd5b5090925090506117d0565b610250600480360360a0811015610b7657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610bb657600080fd5b820183602082011115610bc857600080fd5b80359060200191846001830284011164010000000083111715610bea57600080fd5b5090925090506118a4565b348015610c0157600080fd5b506107d060048036036060811015610c1857600080fd5b810190602081018135640100000000811115610c3357600080fd5b820183602082011115610c4557600080fd5b80359060200191846020830284011164010000000083111715610c6757600080fd5b91939092823592604081019060200135640100000000811115610c8957600080fd5b820183602082011115610c9b57600080fd5b80359060200191846001830284011164010000000083111715610cbd57600080fd5b509092509050611981565b348015610cd457600080fd5b50610250611a90565b6102506111d8565b348015610cf157600080fd5b506107d060048036036040811015610d0857600080fd5b810190602081018135640100000000811115610d2357600080fd5b820183602082011115610d3557600080fd5b80359060200191846020830284011164010000000083111715610d5757600080fd5b919390929091602081019035640100000000811115610d7557600080fd5b820183602082011115610d8757600080fd5b80359060200191846001830284011164010000000083111715610da957600080fd5b509092509050611aa3565b348015610dc057600080fd5b50610def60048036036040811015610dd757600080fd5b506001600160a01b0381358116916020013516611b8f565b6040805192835260208301919091528051918290030190f35b348015610e1457600080fd5b50610422611ceb565b348015610e2957600080fd5b5061025060048036036020811015610e4057600080fd5b50356001600160a01b0316611cf1565b3390565b6007546001600160a01b031681565b6000606060025460001415610ebf576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610ec7611d57565b610ecf614be0565b610ed7610e50565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a0820152610f4881611daf565b9250925050965096945050505050565b6000610f9c86868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dd692505050565b9695505050505050565b6008546001600160a01b031681565b6000818152600660205260408120819081908190606090819083610fdb60048301611f27565b82549850905087611033576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b60018201546002830154600384015491985096506001600160a01b031694508067ffffffffffffffff8111801561106957600080fd5b50604051908082528060200260200182016040528015611093578160200160208202803683370190505b5093508067ffffffffffffffff811180156110ad57600080fd5b506040519080825280602002602001820160405280156110d7578160200160208202803683370190505b50925060005b8181101561114e576000806110f56004860184611f2b565b915091508160001c87848151811061110957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508060001c86848151811061113957fe5b602090810291909101015250506001016110dd565b50505091939550919395565b61116684848484611fbd565b50505050565b6002546111c0576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b6111d06111cb610e50565b6121f4565b6111d86122bb565b565b6111e2614be0565b6111ea610e50565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a082015261125b81612313565b50505050505050565b60011981565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b60035460ff1681565b6112966111cb610e50565b8151815181146112ed576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e636f6e73697374656e742061727261797300000000000000604482015290519081900360640190fd5b6000848152600660205260409020805461134e576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b600481018261139957600061136282611f27565b905060005b8181101561139257600061137b8482611f2b565b5090506113888482612377565b5050600101611367565b50506113a4565b6113a4818686612457565b857fcb3fe5489e0cd43d0f4a33d1e09a4a0463a03d0d38f56165530854e5540db1438686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561140c5781810151838201526020016113f4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561144b578181015183820152602001611433565b5050505090500194505050505060405180910390a2505050505050565b606060046000018054806020026020016040519081016040528092919081815260200182805480156114b957602002820191906000526020600020905b8154815260200190600101908083116114a5575b5050505050905090565b6114ce6111cb610e50565b6001600160a01b038116611529576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03838116919091179182905560408051929091168252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f855916020908290030190a150565b6002546115e4576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b6115ef6111cb610e50565b6111d86124df565b6001546001600160a01b031681565b61160e614be0565b611616610e50565b6001600160a01b0390811682528a8116602080840191909152908a16604080840191909152606083018a9052608083018990528051601f880183900483028101830190915286815290879087908190840183828082843760009201919091525050505060a082015260c081018490526040805160208085028281018201909352848252909185918591829185019084908082843760009201919091525050505060e08201526116c48161251d565b50505050505050505050565b6000546001600160a01b031690565b600060606116eb614be0565b6116f3610e50565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a082015261176481612596565b8060c0015192508060e00151915050965096945050505050565b60001981565b60006117c7858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263892505050565b95945050505050565b6001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146118235760085461180e906001600160a01b038881169116876127a6565b6118236001600160a01b038716333088612826565b61186586858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ae92505050565b6040805182815290519196507fe16fb73e6e5415265887cee6412691a8b3cd94e24c6528ed966dc06ffb799b78919081900360200190a1505050505050565b6002546118f8576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b611900611d57565b611908614be0565b611910610e50565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a082015261125b81612a5b565b6060848067ffffffffffffffff8111801561199b57600080fd5b506040519080825280602002602001820160405280156119c5578160200160208202803683370190505b50915060005b81811015611a85576000611a478989848181106119e457fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b03168989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dd692505050565b9050611a6581611a5f89670de0b6b3a7640000612a88565b90612ae8565b848381518110611a7157fe5b6020908102919091010152506001016119cb565b505095945050505050565b611a9b6111cb610e50565b6111d0612b4f565b6060838067ffffffffffffffff81118015611abd57600080fd5b50604051908082528060200260200182016040528015611ae7578160200160208202803683370190505b50915060005b81811015611b8557611b66878783818110611b0457fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b031687878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263892505050565b838281518110611b7257fe5b6020908102919091010152600101611aed565b5050949350505050565b6000806001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611c3457600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0557600080fd5b505afa158015611c19573d6000803e3d6000fd5b505050506040513d6020811015611c2f57600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611cd657600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca757600080fd5b505afa158015611cbb573d6000803e3d6000fd5b505050506040513d6020811015611cd157600080fd5b505192505b611ce08484612bd1565b909590945092505050565b60025490565b611cfc6111cb610e50565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60035460ff16156111d8576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60006060611dbc83612313565b611dc583612596565b505060c081015160e0909101519091565b60006001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611e7a57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4b57600080fd5b505afa158015611e5f573d6000803e3d6000fd5b505050506040513d6020811015611e7557600080fd5b505194505b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611f1c57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eed57600080fd5b505afa158015611f01573d6000803e3d6000fd5b505050506040513d6020811015611f1757600080fd5b505193505b6117c7858585612c9d565b5490565b815460009081908310611f85576040805162461bcd60e51b815260206004820152601c60248201527f456e756d4d61703a20696e646578206f7574206f6620626f756e647300000000604482015290519081900360640190fd5b6000846000018481548110611f9657fe5b906000526020600020906002020190508060000154816001015492509250505b9250929050565b8261200f576040805162461bcd60e51b815260206004820152601160248201527f53616c653a207a65726f20737570706c79000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000061203a6004611f27565b1061208c576040805162461bcd60e51b815260206004820152601360248201527f53616c653a20746f6f206d616e7920736b757300000000000000000000000000604482015290519081900360640190fd5b612097600485612ea4565b6120e8576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20736b7520616c7265616479206372656174656400000000000000604482015290519081900360640190fd5b6001600160a01b0381161561215a57612109816001600160a01b0316612eee565b61215a576040805162461bcd60e51b815260206004820152601b60248201527f53616c653a206e6f6e2d636f6e74726163742072656365697665720000000000604482015290519081900360640190fd5b60008481526006602090815260409182902085815560018101869055600281018590556003810180546001600160a01b03861673ffffffffffffffffffffffffffffffffffffffff1990911681179091558351888152928301879052828401869052606083015291517f38bd4aabce684540cd61351b91f2f5facf9d6963934347e25aab93d87ae7ac149181900360800190a15050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561222d57600080fd5b505afa158015612241573d6000803e3d6000fd5b505050506040513d602081101561225757600080fd5b50516001600160a01b038281169116146122b8576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b6122c3612ef4565b6003805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6122f6610e50565b604080516001600160a01b039092168252519081900360200190a1565b61231c81612f4b565b60408160a001515110156122b8576040805162461bcd60e51b815260206004820152601760248201527f53616c653a206d697373696e6720757365722064617461000000000000000000604482015290519081900360640190fd5b6000818152600183016020526040812054801561244b57835460001980830191908101906000908790839081106123aa57fe5b90600052602060002090600202019050808760000184815481106123ca57fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061240957fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506124519350505050565b60009150505b92915050565b6124628383836131f5565b61246b83611f27565b158061248957506007546124899084906001600160a01b0316613359565b6124da576040805162461bcd60e51b815260206004820152601860248201527f53616c653a206e6f207265666572656e636520746f6b656e0000000000000000604482015290519081900360640190fd5b505050565b6124e7611d57565b6003805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586122f6610e50565b60e08101515115801590612552575060408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b1561258d5760a081015160208101518061256b57506000195b600854604084015161258a916001600160a01b039182169116836127a6565b50505b6122b881613371565b6060810151600090815260066020526040902080546125fc576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20756e737570706f7274656420534b550000000000000000000000604482015290519081900360640190fd5b60048101600061260c8483613610565b9050612619848383613680565b61116657608084015161262d908290612a88565b60c085015250505050565b60006001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156126dc57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126ad57600080fd5b505afa1580156126c1573d6000803e3d6000fd5b505050506040513d60208110156126d757600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561277e57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561274f57600080fd5b505afa158015612763573d6000803e3d6000fd5b505050506040513d602081101561277957600080fd5b505192505b60008061278b8686612bd1565b9092509050610f9c82611a5f83670de0b6b3a7640000612a88565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526124da908490613784565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611166908590613784565b6020810151604082015160009190816128f4576001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156128ee573491506128f4565b60001991505b806128fe57506000195b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156129a057600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561297157600080fd5b505afa158015612985573d6000803e3d6000fd5b505050506040513d602081101561299b57600080fd5b505196505b6001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612a4257600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a1357600080fd5b505afa158015612a27573d6000803e3d6000fd5b505050506040513d6020811015612a3d57600080fd5b505195505b612a5087878785308661396e565b979650505050505050565b612a6481612313565b612a6d81612596565b612a768161251d565b612a7f81614014565b6122b881614060565b600082612a9757506000612451565b82820282848281612aa457fe5b0414612ae15760405162461bcd60e51b8152600401808060200182810382526021815260200180614c526021913960400191505060405180910390fd5b9392505050565b6000808211612b3e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612b4757fe5b049392505050565b60025415612ba4576040805162461bcd60e51b815260206004820152601260248201527f537461727461626c653a20737461727465640000000000000000000000000000604482015290519081900360640190fd5b426002557f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94176122f6610e50565b6000806000612be08585614545565b509050600080612bf08787614632565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612c2857600080fd5b505afa158015612c3c573d6000803e3d6000fd5b505050506040513d6060811015612c5257600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614612c8c578082612c8f565b81815b909890975095505050505050565b604080516002808252606082018352600092839291906020830190803683370190505090508481600081518110612cd057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110612cfe57fe5b6001600160a01b03928316602091820292909201810191909152600854604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101888152602482019283528651604483015286516000969490941694631f00ca74948a948994909260649091019185820191028083838c5b83811015612d95578181015183820152602001612d7d565b50505050905001935050505060006040518083038186803b158015612db957600080fd5b505afa158015612dcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612df657600080fd5b8101908080516040519392919084640100000000821115612e1657600080fd5b908301906020820185811115612e2b57600080fd5b8251866020820283011164010000000082111715612e4857600080fd5b82525081516020918201928201910280838360005b83811015612e75578181015183820152602001612e5d565b50505050905001604052505050905080600081518110612e9157fe5b6020026020010151925050509392505050565b6000612eb08383613359565b612ee657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612451565b506000612451565b3b151590565b60035460ff166111d8576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60208101516001600160a01b0316612faa576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f206164647265737320726563697069656e7400000000604482015290519081900360640190fd5b60408101516001600160a01b0316613009576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b608081015161305f576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f207175616e7469747920707572636861736500000000604482015290519081900360640190fd5b6060810151600090815260066020526040902080546130c5576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b816080015181600201541015613122576040805162461bcd60e51b815260206004820152601860248201527f53616c653a2061626f7665206d6178207175616e746974790000000000000000604482015290519081900360640190fd5b80546000191461318957816080015181600101541015613189576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e73756666696369656e7420737570706c7900000000000000604482015290519081900360640190fd5b60408201516001600160a01b03166131a46004830182613359565b6124da576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a206e6f6e2d6578697374656e7420736b7520746f6b656e00000000604482015290519081900360640190fd5b60005b82518110156132db57600083828151811061320f57fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415613281576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b600083838151811061328f57fe5b6020026020010151905080600014156132bb576132b5866001600160a01b038416612377565b506132d1565b6132cf866001600160a01b03841683614795565b505b50506001016131f8565b507f000000000000000000000000000000000000000000000000000000000000000061330684611f27565b11156124da576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20746f6f206d616e7920746f6b656e730000000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b60e08101515115806133a357506001600019038160e0015160008151811061339557fe5b602002602001015160001c14155b156133b6576133b18161482c565b6122b8565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561343d578060c00151341015613438576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b613464565b613464613448610e50565b60c083015160408401516001600160a01b031691903090612826565b60008160e0015160018151811061347757fe5b602002602001015160001c905060006134a9670de0b6b3a7640000611a5f8560c0015185612a8890919063ffffffff16565b604084015160075460a08601519293506000926134d292916001600160a01b03169085906128ae565b60408501519091506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561355357600061350a348361497b565b9050801561354d5784516040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561354b573d6000803e3d6000fd5b505b5061358c565b60c0840151600090613565908361497b565b9050801561358a578451604086015161358a916001600160a01b0390911690836149d8565b505b6007546001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156135f3576001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156135ed573d6000803e3d6000fd5b50611166565b600154600754611166916001600160a01b039182169116836149d8565b604082015160009061362c9083906001600160a01b0316614a58565b905080612451576040805162461bcd60e51b815260206004820152601f60248201527f53616c653a20756e737570706f72746564207061796d656e7420746f6b656e00604482015290519081900360640190fd5b6000600119821461369d57613696848484614ae8565b9050612ae1565b6007546000906136b79085906001600160a01b0316614a58565b60808601519091506000906136cd908390612a88565b604087015160075460a08901519293506000926136f692916001600160a01b0316908590611dd6565b9050600061371082611a5f85670de0b6b3a7640000612a88565b604080516002808252606082018352929350919060208301908036833750505060e08901819052805187919060009061374557fe5b6020026020010181815250508060001b8860e0015160018151811061376657fe5b60209081029190910101525060c08701525060019150509392505050565b816137976001600160a01b038216612eee565b6137e8576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106138255780518252601f199092019160209182019101613806565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613887576040519150601f19603f3d011682016040523d82523d6000602084013e61388c565b606091505b5091509150811561390b57805115613906578080602001905160208110156138b357600080fd5b5051613906576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b613967565b805161395e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b6000856001600160a01b0316876001600160a01b031614156139d7576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b6040805160028082526060820183526000926020830190803683370190505090508781600081518110613a0657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508681600181518110613a3457fe5b6001600160a01b03928316602091820292909201810191909152600854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051606094929092169263ad5c464892600480840193829003018186803b158015613aa257600080fd5b505afa158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b50516001600160a01b038a811691161415613cc757348614613b35576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056323a20696e76616c6964206d6178416d6f756e74496e0000604482015290519081900360640190fd5b6008546040517ffb3bdb41000000000000000000000000000000000000000000000000000000008152600481018981526001600160a01b03888116604484015260648301889052608060248401908152865160848501528651919094169363fb3bdb419334938d9389938d938d939260a4909101906020808801910280838360005b83811015613bcf578181015183820152602001613bb7565b50505050905001955050505050506000604051808303818588803b158015613bf657600080fd5b505af1158015613c0a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015613c3457600080fd5b8101908080516040519392919084640100000000821115613c5457600080fd5b908301906020820185811115613c6957600080fd5b8251866020820283011164010000000082111715613c8657600080fd5b82525081516020918201928201910280838360005b83811015613cb3578181015183820152602001613c9b565b505050509050016040525050509050613ff1565b600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d1557600080fd5b505afa158015613d29573d6000803e3d6000fd5b505050506040513d6020811015613d3f57600080fd5b50516001600160a01b0389811691161415613e5b576008546040517f4a25d94a00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693634a25d94a938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613df5578181015183820152602001613ddd565b505050509050019650505050505050600060405180830381600087803b158015613e1e57600080fd5b505af1158015613e32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613c3457600080fd5b6008546040517f8803dbee00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693638803dbee938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613efc578181015183820152602001613ee4565b505050509050019650505050505050600060405180830381600087803b158015613f2557600080fd5b505af1158015613f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613f6257600080fd5b8101908080516040519392919084640100000000821115613f8257600080fd5b908301906020820185811115613f9757600080fd5b8251866020820283011164010000000082111715613fb457600080fd5b82525081516020918201928201910280838360005b83811015613fe1578181015183820152602001613fc9565b5050505090500160405250505090505b80600081518110613ffe57fe5b6020026020010151925050509695505050505050565b6060810151600090815260066020526040902080546000191461405c57608082015160018201546140449161497b565b60608301516000908152600660205260409020600101555b5050565b806060015181604001516001600160a01b031682600001516001600160a01b03167f29f844483ca6b10b5c0611d039afc15ce8f6380e905307b381c3a8ee4e90e11e846020015185608001518660a001518760c001518860e001518961010001518a610120015160405160200180848051906020019060200280838360005b838110156140f75781810151838201526020016140df565b50505050905001838051906020019060200280838360005b8381101561412757818101518382015260200161410f565b50505050905001828051906020019060200280838360005b8381101561415757818101518382015260200161413f565b50505050905001935050505060405160208183030381529060405260405180866001600160a01b031681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156141ce5781810151838201526020016141b6565b50505050905090810190601f1680156141fb5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561422e578181015183820152602001614216565b50505050905090810190601f16801561425b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460608101516000908152600660205260409020600301546001600160a01b0316801561405c576361eceae860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816001600160a01b03166361eceae8846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001516040518b63ffffffff1660e01b8152600401808b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b031681526020018881526020018781526020018060200186815260200180602001806020018060200185810385528a818151815260200191508051906020019080838360005b8381101561439457818101518382015260200161437c565b50505050905090810190601f1680156143c15780820380516001836020036101000a031916815260200191505b508581038452885181528851602091820191808b01910280838360005b838110156143f65781810151838201526020016143de565b50505050905001858103835287818151815260200191508051906020019060200280838360005b8381101561443557818101518382015260200161441d565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561447457818101518382015260200161445c565b505050509050019e505050505050505050505050505050602060405180830381600087803b1580156144a557600080fd5b505af11580156144b9573d6000803e3d6000fd5b505050506040513d60208110156144cf57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000161461405c576040805162461bcd60e51b815260206004820152601a60248201527f53616c653a206e6f74696669636174696f6e2072656675736564000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846001600160a01b031614156145af576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316106145cf5782846145d2565b83835b90925090506001600160a01b038216611fb6576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60008060006146418585614545565b91509150600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561469357600080fd5b505afa1580156146a7573d6000803e3d6000fd5b505050506040513d60208110156146bd57600080fd5b5051604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208381019190915294861b81166034830152825160288184030181526048830184528051908601207fff0000000000000000000000000000000000000000000000000000000000000060688401529390951b9094166069850152607d8401919091527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808501919091528151808503909101815260bd909301905281519101209392505050565b6000828152600184016020526040812054806147fa575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055612ae1565b8285600001600183038154811061480d57fe5b9060005260206000209060020201600101819055506000915050612ae1565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561494f578060c001513410156148ae576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b60015460c08201516040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156148ec573d6000803e3d6000fd5b5060006149068260c001513461497b90919063ffffffff16565b905080156149495781516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015614947573d6000803e3d6000fd5b505b506122b8565b6122b861495a610e50565b60015460c084015160408501516001600160a01b0390811693921690612826565b6000828211156149d2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526124da908490613784565b600081815260018301602052604081205480614abb576040805162461bcd60e51b815260206004820152601860248201527f456e756d4d61703a206e6f6e6578697374656e74206b65790000000000000000604482015290519081900360640190fd5b836000016001820381548110614acd57fe5b90600052602060002090600202016001015491505092915050565b60006000198214614afb57506000612ae1565b600754600090614b159085906001600160a01b0316614a58565b604086015160075460a0880151929350600092614b3c92916001600160a01b031690612638565b90506000614b6d8760800151614b6784611a5f670de0b6b3a764000088612a8890919063ffffffff16565b90612a88565b604080516002808252606082018352929350919060208301908036833750505060e088018190528051869190600090614ba257fe5b6020026020010181815250508160001b8760e00151600181518110614bc357fe5b602090810291909101015260c08701525060019150509392505050565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016060815260200160008152602001606081526020016060815260200160608152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220137e37c66b04e815a20493ec609a66e1beb395702fc79e0266ae7431cb4b3f7164736f6c63430007060033abb92614f53337043b55dc996a83ebb09adce78ec336ca188ea02180b61d1c14",
  "deployedBytecode": "0x6080604052600436106101dc5760003560e01c80638488bb4e11610102578063a963b25711610095578063c7b778db11610064578063c7b778db14610ce5578063d52bb6f414610db4578063f21f537d14610e08578063f2fde38b14610e1d57610252565b8063a963b25714610b60578063bda4c5ab14610bf5578063be9a655514610cc8578063c2ac3aff14610cdd57610252565b80639865bcc8116100d15780639865bcc814610a1f5780639e04954514610a1f578063a1e1690814610a34578063a541f89c14610aca57610252565b80638488bb4e146108685780638ce507eb1461087d5780638da5cb5b1461096857806397309b441461097d57610252565b806356c1476e1161017a5780635e6e9f70116101495780635e6e9f701461068057806361bd3851146107bb5780636b8f9c43146108205780638456cb591461085357610252565b806356c1476e1461058b578063579f2c771461062d5780635c4fafc7146106425780635c975abb1461065757610252565b80631694505e116101b65780631694505e146104345780632a8a45bc146104495780632c87927b146105315780633f4ba83a1461057657610252565b80631265b651146102575780631323b06614610288578063151229f71461038557610252565b36610252576008546001600160a01b03166101f5610e50565b6001600160a01b031614610250576040805162461bcd60e51b815260206004820152601860248201527f53616c653a20496e76616c6964204554482073656e6465720000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561026357600080fd5b5061026c610e54565b604080516001600160a01b039092168252519081900360200190f35b34801561029457600080fd5b5061032a600480360360a08110156102ab57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156102eb57600080fd5b8201836020820111156102fd57600080fd5b8035906020019184600183028401116401000000008311171561031f57600080fd5b509092509050610e63565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610370578181015183820152602001610358565b50505050905001935050505060405180910390f35b34801561039157600080fd5b50610422600480360360808110156103a857600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103e357600080fd5b8201836020820111156103f557600080fd5b8035906020019184600183028401116401000000008311171561041757600080fd5b509092509050610f58565b60408051918252519081900360200190f35b34801561044057600080fd5b5061026c610fa6565b34801561045557600080fd5b506104736004803603602081101561046c57600080fd5b5035610fb5565b60405180878152602001868152602001858152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104d85781810151838201526020016104c0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105175781810151838201526020016104ff565b505050509050019850505050505050505060405180910390f35b34801561053d57600080fd5b506102506004803603608081101561055457600080fd5b50803590602081013590604081013590606001356001600160a01b031661115a565b34801561058257600080fd5b5061025061116c565b34801561059757600080fd5b50610250600480360360a08110156105ae57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105ee57600080fd5b82018360208201111561060057600080fd5b8035906020019184600183028401116401000000008311171561062257600080fd5b5090925090506111da565b34801561063957600080fd5b50610422611264565b34801561064e57600080fd5b5061026c61126a565b34801561066357600080fd5b5061066c611282565b604080519115158252519081900360200190f35b34801561068c57600080fd5b50610250600480360360608110156106a357600080fd5b813591908101906040810160208201356401000000008111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460208302840111640100000000831117156106f957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561074957600080fd5b82018360208201111561075b57600080fd5b8035906020019184602083028401116401000000008311171561077d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061128b945050505050565b3480156107c757600080fd5b506107d0611468565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561080c5781810151838201526020016107f4565b505050509050019250505060405180910390f35b34801561082c57600080fd5b506102506004803603602081101561084357600080fd5b50356001600160a01b03166114c3565b34801561085f57600080fd5b50610250611590565b34801561087457600080fd5b5061026c6115f7565b610250600480360360e081101561089357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156108d357600080fd5b8201836020820111156108e557600080fd5b8035906020019184600183028401116401000000008311171561090757600080fd5b9193909282359260408101906020013564010000000081111561092957600080fd5b82018360208201111561093b57600080fd5b8035906020019184602083028401116401000000008311171561095d57600080fd5b509092509050611606565b34801561097457600080fd5b5061026c6116d0565b34801561098957600080fd5b5061032a600480360360a08110156109a057600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156109e057600080fd5b8201836020820111156109f257600080fd5b80359060200191846001830284011164010000000083111715610a1457600080fd5b5090925090506116df565b348015610a2b57600080fd5b5061042261177e565b348015610a4057600080fd5b5061042260048036036060811015610a5757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135640100000000811115610a8b57600080fd5b820183602082011115610a9d57600080fd5b80359060200191846001830284011164010000000083111715610abf57600080fd5b509092509050611784565b610250600480360360a0811015610ae057600080fd5b6001600160a01b0382358116926020810135926040820135909216916060820135919081019060a081016080820135640100000000811115610b2157600080fd5b820183602082011115610b3357600080fd5b80359060200191846001830284011164010000000083111715610b5557600080fd5b5090925090506117d0565b610250600480360360a0811015610b7657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610bb657600080fd5b820183602082011115610bc857600080fd5b80359060200191846001830284011164010000000083111715610bea57600080fd5b5090925090506118a4565b348015610c0157600080fd5b506107d060048036036060811015610c1857600080fd5b810190602081018135640100000000811115610c3357600080fd5b820183602082011115610c4557600080fd5b80359060200191846020830284011164010000000083111715610c6757600080fd5b91939092823592604081019060200135640100000000811115610c8957600080fd5b820183602082011115610c9b57600080fd5b80359060200191846001830284011164010000000083111715610cbd57600080fd5b509092509050611981565b348015610cd457600080fd5b50610250611a90565b6102506111d8565b348015610cf157600080fd5b506107d060048036036040811015610d0857600080fd5b810190602081018135640100000000811115610d2357600080fd5b820183602082011115610d3557600080fd5b80359060200191846020830284011164010000000083111715610d5757600080fd5b919390929091602081019035640100000000811115610d7557600080fd5b820183602082011115610d8757600080fd5b80359060200191846001830284011164010000000083111715610da957600080fd5b509092509050611aa3565b348015610dc057600080fd5b50610def60048036036040811015610dd757600080fd5b506001600160a01b0381358116916020013516611b8f565b6040805192835260208301919091528051918290030190f35b348015610e1457600080fd5b50610422611ceb565b348015610e2957600080fd5b5061025060048036036020811015610e4057600080fd5b50356001600160a01b0316611cf1565b3390565b6007546001600160a01b031681565b6000606060025460001415610ebf576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610ec7611d57565b610ecf614be0565b610ed7610e50565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a0820152610f4881611daf565b9250925050965096945050505050565b6000610f9c86868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dd692505050565b9695505050505050565b6008546001600160a01b031681565b6000818152600660205260408120819081908190606090819083610fdb60048301611f27565b82549850905087611033576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b60018201546002830154600384015491985096506001600160a01b031694508067ffffffffffffffff8111801561106957600080fd5b50604051908082528060200260200182016040528015611093578160200160208202803683370190505b5093508067ffffffffffffffff811180156110ad57600080fd5b506040519080825280602002602001820160405280156110d7578160200160208202803683370190505b50925060005b8181101561114e576000806110f56004860184611f2b565b915091508160001c87848151811061110957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508060001c86848151811061113957fe5b602090810291909101015250506001016110dd565b50505091939550919395565b61116684848484611fbd565b50505050565b6002546111c0576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b6111d06111cb610e50565b6121f4565b6111d86122bb565b565b6111e2614be0565b6111ea610e50565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a082015261125b81612313565b50505050505050565b60011981565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b60035460ff1681565b6112966111cb610e50565b8151815181146112ed576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e636f6e73697374656e742061727261797300000000000000604482015290519081900360640190fd5b6000848152600660205260409020805461134e576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b600481018261139957600061136282611f27565b905060005b8181101561139257600061137b8482611f2b565b5090506113888482612377565b5050600101611367565b50506113a4565b6113a4818686612457565b857fcb3fe5489e0cd43d0f4a33d1e09a4a0463a03d0d38f56165530854e5540db1438686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561140c5781810151838201526020016113f4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561144b578181015183820152602001611433565b5050505090500194505050505060405180910390a2505050505050565b606060046000018054806020026020016040519081016040528092919081815260200182805480156114b957602002820191906000526020600020905b8154815260200190600101908083116114a5575b5050505050905090565b6114ce6111cb610e50565b6001600160a01b038116611529576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03838116919091179182905560408051929091168252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f855916020908290030190a150565b6002546115e4576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b6115ef6111cb610e50565b6111d86124df565b6001546001600160a01b031681565b61160e614be0565b611616610e50565b6001600160a01b0390811682528a8116602080840191909152908a16604080840191909152606083018a9052608083018990528051601f880183900483028101830190915286815290879087908190840183828082843760009201919091525050505060a082015260c081018490526040805160208085028281018201909352848252909185918591829185019084908082843760009201919091525050505060e08201526116c48161251d565b50505050505050505050565b6000546001600160a01b031690565b600060606116eb614be0565b6116f3610e50565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a082015261176481612596565b8060c0015192508060e00151915050965096945050505050565b60001981565b60006117c7858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263892505050565b95945050505050565b6001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146118235760085461180e906001600160a01b038881169116876127a6565b6118236001600160a01b038716333088612826565b61186586858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ae92505050565b6040805182815290519196507fe16fb73e6e5415265887cee6412691a8b3cd94e24c6528ed966dc06ffb799b78919081900360200190a1505050505050565b6002546118f8576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b611900611d57565b611908614be0565b611910610e50565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a082015261125b81612a5b565b6060848067ffffffffffffffff8111801561199b57600080fd5b506040519080825280602002602001820160405280156119c5578160200160208202803683370190505b50915060005b81811015611a85576000611a478989848181106119e457fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b03168989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dd692505050565b9050611a6581611a5f89670de0b6b3a7640000612a88565b90612ae8565b848381518110611a7157fe5b6020908102919091010152506001016119cb565b505095945050505050565b611a9b6111cb610e50565b6111d0612b4f565b6060838067ffffffffffffffff81118015611abd57600080fd5b50604051908082528060200260200182016040528015611ae7578160200160208202803683370190505b50915060005b81811015611b8557611b66878783818110611b0457fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b031687878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263892505050565b838281518110611b7257fe5b6020908102919091010152600101611aed565b5050949350505050565b6000806001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611c3457600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0557600080fd5b505afa158015611c19573d6000803e3d6000fd5b505050506040513d6020811015611c2f57600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611cd657600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca757600080fd5b505afa158015611cbb573d6000803e3d6000fd5b505050506040513d6020811015611cd157600080fd5b505192505b611ce08484612bd1565b909590945092505050565b60025490565b611cfc6111cb610e50565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60035460ff16156111d8576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60006060611dbc83612313565b611dc583612596565b505060c081015160e0909101519091565b60006001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611e7a57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4b57600080fd5b505afa158015611e5f573d6000803e3d6000fd5b505050506040513d6020811015611e7557600080fd5b505194505b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611f1c57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eed57600080fd5b505afa158015611f01573d6000803e3d6000fd5b505050506040513d6020811015611f1757600080fd5b505193505b6117c7858585612c9d565b5490565b815460009081908310611f85576040805162461bcd60e51b815260206004820152601c60248201527f456e756d4d61703a20696e646578206f7574206f6620626f756e647300000000604482015290519081900360640190fd5b6000846000018481548110611f9657fe5b906000526020600020906002020190508060000154816001015492509250505b9250929050565b8261200f576040805162461bcd60e51b815260206004820152601160248201527f53616c653a207a65726f20737570706c79000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000061203a6004611f27565b1061208c576040805162461bcd60e51b815260206004820152601360248201527f53616c653a20746f6f206d616e7920736b757300000000000000000000000000604482015290519081900360640190fd5b612097600485612ea4565b6120e8576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20736b7520616c7265616479206372656174656400000000000000604482015290519081900360640190fd5b6001600160a01b0381161561215a57612109816001600160a01b0316612eee565b61215a576040805162461bcd60e51b815260206004820152601b60248201527f53616c653a206e6f6e2d636f6e74726163742072656365697665720000000000604482015290519081900360640190fd5b60008481526006602090815260409182902085815560018101869055600281018590556003810180546001600160a01b03861673ffffffffffffffffffffffffffffffffffffffff1990911681179091558351888152928301879052828401869052606083015291517f38bd4aabce684540cd61351b91f2f5facf9d6963934347e25aab93d87ae7ac149181900360800190a15050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561222d57600080fd5b505afa158015612241573d6000803e3d6000fd5b505050506040513d602081101561225757600080fd5b50516001600160a01b038281169116146122b8576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b6122c3612ef4565b6003805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6122f6610e50565b604080516001600160a01b039092168252519081900360200190a1565b61231c81612f4b565b60408160a001515110156122b8576040805162461bcd60e51b815260206004820152601760248201527f53616c653a206d697373696e6720757365722064617461000000000000000000604482015290519081900360640190fd5b6000818152600183016020526040812054801561244b57835460001980830191908101906000908790839081106123aa57fe5b90600052602060002090600202019050808760000184815481106123ca57fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061240957fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506124519350505050565b60009150505b92915050565b6124628383836131f5565b61246b83611f27565b158061248957506007546124899084906001600160a01b0316613359565b6124da576040805162461bcd60e51b815260206004820152601860248201527f53616c653a206e6f207265666572656e636520746f6b656e0000000000000000604482015290519081900360640190fd5b505050565b6124e7611d57565b6003805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586122f6610e50565b60e08101515115801590612552575060408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b1561258d5760a081015160208101518061256b57506000195b600854604084015161258a916001600160a01b039182169116836127a6565b50505b6122b881613371565b6060810151600090815260066020526040902080546125fc576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20756e737570706f7274656420534b550000000000000000000000604482015290519081900360640190fd5b60048101600061260c8483613610565b9050612619848383613680565b61116657608084015161262d908290612a88565b60c085015250505050565b60006001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156126dc57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126ad57600080fd5b505afa1580156126c1573d6000803e3d6000fd5b505050506040513d60208110156126d757600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561277e57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561274f57600080fd5b505afa158015612763573d6000803e3d6000fd5b505050506040513d602081101561277957600080fd5b505192505b60008061278b8686612bd1565b9092509050610f9c82611a5f83670de0b6b3a7640000612a88565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526124da908490613784565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611166908590613784565b6020810151604082015160009190816128f4576001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156128ee573491506128f4565b60001991505b806128fe57506000195b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156129a057600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561297157600080fd5b505afa158015612985573d6000803e3d6000fd5b505050506040513d602081101561299b57600080fd5b505196505b6001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612a4257600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a1357600080fd5b505afa158015612a27573d6000803e3d6000fd5b505050506040513d6020811015612a3d57600080fd5b505195505b612a5087878785308661396e565b979650505050505050565b612a6481612313565b612a6d81612596565b612a768161251d565b612a7f81614014565b6122b881614060565b600082612a9757506000612451565b82820282848281612aa457fe5b0414612ae15760405162461bcd60e51b8152600401808060200182810382526021815260200180614c526021913960400191505060405180910390fd5b9392505050565b6000808211612b3e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612b4757fe5b049392505050565b60025415612ba4576040805162461bcd60e51b815260206004820152601260248201527f537461727461626c653a20737461727465640000000000000000000000000000604482015290519081900360640190fd5b426002557f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94176122f6610e50565b6000806000612be08585614545565b509050600080612bf08787614632565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612c2857600080fd5b505afa158015612c3c573d6000803e3d6000fd5b505050506040513d6060811015612c5257600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614612c8c578082612c8f565b81815b909890975095505050505050565b604080516002808252606082018352600092839291906020830190803683370190505090508481600081518110612cd057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110612cfe57fe5b6001600160a01b03928316602091820292909201810191909152600854604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101888152602482019283528651604483015286516000969490941694631f00ca74948a948994909260649091019185820191028083838c5b83811015612d95578181015183820152602001612d7d565b50505050905001935050505060006040518083038186803b158015612db957600080fd5b505afa158015612dcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612df657600080fd5b8101908080516040519392919084640100000000821115612e1657600080fd5b908301906020820185811115612e2b57600080fd5b8251866020820283011164010000000082111715612e4857600080fd5b82525081516020918201928201910280838360005b83811015612e75578181015183820152602001612e5d565b50505050905001604052505050905080600081518110612e9157fe5b6020026020010151925050509392505050565b6000612eb08383613359565b612ee657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612451565b506000612451565b3b151590565b60035460ff166111d8576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60208101516001600160a01b0316612faa576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f206164647265737320726563697069656e7400000000604482015290519081900360640190fd5b60408101516001600160a01b0316613009576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b608081015161305f576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f207175616e7469747920707572636861736500000000604482015290519081900360640190fd5b6060810151600090815260066020526040902080546130c5576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b816080015181600201541015613122576040805162461bcd60e51b815260206004820152601860248201527f53616c653a2061626f7665206d6178207175616e746974790000000000000000604482015290519081900360640190fd5b80546000191461318957816080015181600101541015613189576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e73756666696369656e7420737570706c7900000000000000604482015290519081900360640190fd5b60408201516001600160a01b03166131a46004830182613359565b6124da576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a206e6f6e2d6578697374656e7420736b7520746f6b656e00000000604482015290519081900360640190fd5b60005b82518110156132db57600083828151811061320f57fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415613281576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b600083838151811061328f57fe5b6020026020010151905080600014156132bb576132b5866001600160a01b038416612377565b506132d1565b6132cf866001600160a01b03841683614795565b505b50506001016131f8565b507f000000000000000000000000000000000000000000000000000000000000000061330684611f27565b11156124da576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20746f6f206d616e7920746f6b656e730000000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b60e08101515115806133a357506001600019038160e0015160008151811061339557fe5b602002602001015160001c14155b156133b6576133b18161482c565b6122b8565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561343d578060c00151341015613438576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b613464565b613464613448610e50565b60c083015160408401516001600160a01b031691903090612826565b60008160e0015160018151811061347757fe5b602002602001015160001c905060006134a9670de0b6b3a7640000611a5f8560c0015185612a8890919063ffffffff16565b604084015160075460a08601519293506000926134d292916001600160a01b03169085906128ae565b60408501519091506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561355357600061350a348361497b565b9050801561354d5784516040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561354b573d6000803e3d6000fd5b505b5061358c565b60c0840151600090613565908361497b565b9050801561358a578451604086015161358a916001600160a01b0390911690836149d8565b505b6007546001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156135f3576001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156135ed573d6000803e3d6000fd5b50611166565b600154600754611166916001600160a01b039182169116836149d8565b604082015160009061362c9083906001600160a01b0316614a58565b905080612451576040805162461bcd60e51b815260206004820152601f60248201527f53616c653a20756e737570706f72746564207061796d656e7420746f6b656e00604482015290519081900360640190fd5b6000600119821461369d57613696848484614ae8565b9050612ae1565b6007546000906136b79085906001600160a01b0316614a58565b60808601519091506000906136cd908390612a88565b604087015160075460a08901519293506000926136f692916001600160a01b0316908590611dd6565b9050600061371082611a5f85670de0b6b3a7640000612a88565b604080516002808252606082018352929350919060208301908036833750505060e08901819052805187919060009061374557fe5b6020026020010181815250508060001b8860e0015160018151811061376657fe5b60209081029190910101525060c08701525060019150509392505050565b816137976001600160a01b038216612eee565b6137e8576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106138255780518252601f199092019160209182019101613806565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613887576040519150601f19603f3d011682016040523d82523d6000602084013e61388c565b606091505b5091509150811561390b57805115613906578080602001905160208110156138b357600080fd5b5051613906576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b613967565b805161395e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b6000856001600160a01b0316876001600160a01b031614156139d7576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b6040805160028082526060820183526000926020830190803683370190505090508781600081518110613a0657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508681600181518110613a3457fe5b6001600160a01b03928316602091820292909201810191909152600854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051606094929092169263ad5c464892600480840193829003018186803b158015613aa257600080fd5b505afa158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b50516001600160a01b038a811691161415613cc757348614613b35576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056323a20696e76616c6964206d6178416d6f756e74496e0000604482015290519081900360640190fd5b6008546040517ffb3bdb41000000000000000000000000000000000000000000000000000000008152600481018981526001600160a01b03888116604484015260648301889052608060248401908152865160848501528651919094169363fb3bdb419334938d9389938d938d939260a4909101906020808801910280838360005b83811015613bcf578181015183820152602001613bb7565b50505050905001955050505050506000604051808303818588803b158015613bf657600080fd5b505af1158015613c0a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015613c3457600080fd5b8101908080516040519392919084640100000000821115613c5457600080fd5b908301906020820185811115613c6957600080fd5b8251866020820283011164010000000082111715613c8657600080fd5b82525081516020918201928201910280838360005b83811015613cb3578181015183820152602001613c9b565b505050509050016040525050509050613ff1565b600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d1557600080fd5b505afa158015613d29573d6000803e3d6000fd5b505050506040513d6020811015613d3f57600080fd5b50516001600160a01b0389811691161415613e5b576008546040517f4a25d94a00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693634a25d94a938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613df5578181015183820152602001613ddd565b505050509050019650505050505050600060405180830381600087803b158015613e1e57600080fd5b505af1158015613e32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613c3457600080fd5b6008546040517f8803dbee00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693638803dbee938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613efc578181015183820152602001613ee4565b505050509050019650505050505050600060405180830381600087803b158015613f2557600080fd5b505af1158015613f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613f6257600080fd5b8101908080516040519392919084640100000000821115613f8257600080fd5b908301906020820185811115613f9757600080fd5b8251866020820283011164010000000082111715613fb457600080fd5b82525081516020918201928201910280838360005b83811015613fe1578181015183820152602001613fc9565b5050505090500160405250505090505b80600081518110613ffe57fe5b6020026020010151925050509695505050505050565b6060810151600090815260066020526040902080546000191461405c57608082015160018201546140449161497b565b60608301516000908152600660205260409020600101555b5050565b806060015181604001516001600160a01b031682600001516001600160a01b03167f29f844483ca6b10b5c0611d039afc15ce8f6380e905307b381c3a8ee4e90e11e846020015185608001518660a001518760c001518860e001518961010001518a610120015160405160200180848051906020019060200280838360005b838110156140f75781810151838201526020016140df565b50505050905001838051906020019060200280838360005b8381101561412757818101518382015260200161410f565b50505050905001828051906020019060200280838360005b8381101561415757818101518382015260200161413f565b50505050905001935050505060405160208183030381529060405260405180866001600160a01b031681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156141ce5781810151838201526020016141b6565b50505050905090810190601f1680156141fb5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561422e578181015183820152602001614216565b50505050905090810190601f16801561425b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460608101516000908152600660205260409020600301546001600160a01b0316801561405c576361eceae860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816001600160a01b03166361eceae8846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001516040518b63ffffffff1660e01b8152600401808b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b031681526020018881526020018781526020018060200186815260200180602001806020018060200185810385528a818151815260200191508051906020019080838360005b8381101561439457818101518382015260200161437c565b50505050905090810190601f1680156143c15780820380516001836020036101000a031916815260200191505b508581038452885181528851602091820191808b01910280838360005b838110156143f65781810151838201526020016143de565b50505050905001858103835287818151815260200191508051906020019060200280838360005b8381101561443557818101518382015260200161441d565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561447457818101518382015260200161445c565b505050509050019e505050505050505050505050505050602060405180830381600087803b1580156144a557600080fd5b505af11580156144b9573d6000803e3d6000fd5b505050506040513d60208110156144cf57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000161461405c576040805162461bcd60e51b815260206004820152601a60248201527f53616c653a206e6f74696669636174696f6e2072656675736564000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846001600160a01b031614156145af576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316106145cf5782846145d2565b83835b90925090506001600160a01b038216611fb6576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60008060006146418585614545565b91509150600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561469357600080fd5b505afa1580156146a7573d6000803e3d6000fd5b505050506040513d60208110156146bd57600080fd5b5051604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208381019190915294861b81166034830152825160288184030181526048830184528051908601207fff0000000000000000000000000000000000000000000000000000000000000060688401529390951b9094166069850152607d8401919091527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808501919091528151808503909101815260bd909301905281519101209392505050565b6000828152600184016020526040812054806147fa575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055612ae1565b8285600001600183038154811061480d57fe5b9060005260206000209060020201600101819055506000915050612ae1565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561494f578060c001513410156148ae576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b60015460c08201516040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156148ec573d6000803e3d6000fd5b5060006149068260c001513461497b90919063ffffffff16565b905080156149495781516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015614947573d6000803e3d6000fd5b505b506122b8565b6122b861495a610e50565b60015460c084015160408501516001600160a01b0390811693921690612826565b6000828211156149d2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526124da908490613784565b600081815260018301602052604081205480614abb576040805162461bcd60e51b815260206004820152601860248201527f456e756d4d61703a206e6f6e6578697374656e74206b65790000000000000000604482015290519081900360640190fd5b836000016001820381548110614acd57fe5b90600052602060002090600202016001015491505092915050565b60006000198214614afb57506000612ae1565b600754600090614b159085906001600160a01b0316614a58565b604086015160075460a0880151929350600092614b3c92916001600160a01b031690612638565b90506000614b6d8760800151614b6784611a5f670de0b6b3a764000088612a8890919063ffffffff16565b90612a88565b604080516002808252606082018352929350919060208301908036833750505060e088018190528051869190600090614ba257fe5b6020026020010181815250508160001b8760e00151600181518110614bc357fe5b602090810291909101015260c08701525060019150509392505050565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016060815260200160008152602001606081526020016060815260200160608152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220137e37c66b04e815a20493ec609a66e1beb395702fc79e0266ae7431cb4b3f7164736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}