{
  "_format": "hh-sol-artifact-1",
  "contractName": "FranchisedConstantProductPool",
  "sourceName": "contracts/pool/franchised/FranchisedConstantProductPool.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_deployData",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_masterDeployer",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenIn",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOut",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "name": "Swap",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reserve0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reserve1",
          "type": "uint256"
        }
      ],
      "name": "Sync",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "barFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "barFeeTo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bento",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "burn",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct IPool.TokenAmount[]",
          "name": "withdrawnAmounts",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "burnSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "flashSwap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "getAmountIn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "getAmountOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "finalAmountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAssets",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "assets",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReserves",
      "outputs": [
        {
          "internalType": "uint112",
          "name": "_reserve0",
          "type": "uint112"
        },
        {
          "internalType": "uint112",
          "name": "_reserve1",
          "type": "uint112"
        },
        {
          "internalType": "uint32",
          "name": "_blockTimestampLast",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "kLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "level2",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "masterDeployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "operator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolIdentifier",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price0CumulativeLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price1CumulativeLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "swapFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token0",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateBarFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "whiteListManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6101806040523480156200001257600080fd5b50604051620044e5380380620044e58339810160408190526200003591620006a6565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120608081815250506000806000806000806000888060200190518101906200014291906200060f565b965096509650965096509650965060006001600160a01b0316876001600160a01b03161415620001a85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b856001600160a01b0316876001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f4144445245535345530000000000000000000000000060448201526064016200019f565b6001600160a01b038716301415620002575760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b6001600160a01b038616301415620002a25760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b612710851115620002e95760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200019f565b620003018383836200057560201b6200259b1760201c565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038b16916200034591906200078d565b600060405180830381855afa9150503d806000811462000382576040519150601f19603f3d011682016040523d82523d6000602084013e62000387565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038c1691620003d091906200078d565b600060405180830381855afa9150503d80600081146200040d576040519150601f19603f3d011682016040523d82523d6000602084013e62000412565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038d16916200045b91906200078d565b600060405180830381855afa9150503d806000811462000498576040519150601f19603f3d011682016040523d82523d6000602084013e6200049d565b606091505b506001600160601b031960608d811b8216610140528c901b166101605260a08a90526127108a900360c0528451909250620004e391508401602090810190850162000773565b6006558151620004fd9083016020908101908401620005e8565b60601b6001600160601b03191660e0528051620005249060209083018101908301620005e8565b6001600160601b0319606091821b811661010052908c901b16610120526001600b5586156200056357600a80546001600160e01b0316600160e01b1790555b5050505050505050505050506200080d565b600080546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790558015620005c0576001805460ff60a01b1916600160a01b1790555b505050565b8051620005d281620007f4565b919050565b80518015158114620005d257600080fd5b600060208284031215620005fb57600080fd5b81516200060881620007f4565b9392505050565b600080600080600080600060e0888a0312156200062b57600080fd5b87516200063881620007f4565b60208901519097506200064b81620007f4565b604089015190965094506200066360608901620005d7565b935060808801516200067581620007f4565b60a08901519093506200068881620007f4565b91506200069860c08901620005d7565b905092959891949750929550565b60008060408385031215620006ba57600080fd5b82516001600160401b0380821115620006d257600080fd5b818501915085601f830112620006e757600080fd5b815181811115620006fc57620006fc620007de565b604051601f8201601f19908116603f01168101908382118183101715620007275762000727620007de565b816040528281528860208487010111156200074157600080fd5b62000754836020830160208801620007ab565b80965050505050506200076a60208401620005c5565b90509250929050565b6000602082840312156200078657600080fd5b5051919050565b60008251620007a1818460208701620007ab565b9190910192915050565b60005b83811015620007c8578181015183820152602001620007ae565b83811115620007d8576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200080a57600080fd5b50565b60805160a05160c05160e05160601c6101005160601c6101205160601c6101405160601c6101605160601c613b7c620009696000396000818161069701528181610893015281816109c201528181610a70015281816111310152818161123901528181611493015281816115020152818161174401528181611cc001528181611fc50152818161204c0152612c3801526000818161039a0152818161080f01528181610b5501528181610c8401528181611105015281816111d00152818161143f015281816115e3015281816116d601528181611c3a01528181612085015281816121700152612b390152600081816106700152611b3a015260008181610498015281816128a101528181612a1701528181612afd0152612ce101526000818161034e01526130ef015260006127a30152600081816104bf0152818161338701526133f201526000818161045e01526122c60152613b7c6000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c80635a3d549311610160578063a69840a8116100d8578063c14ad8021161008c578063d21220a711610071578063d21220a714610692578063d505accf146106b9578063dd62ed3e146106cc57600080fd5b8063c14ad80214610662578063cf58879a1461066b57600080fd5b8063a9059cbb116100bd578063a9059cbb14610617578063af8c09bf1461062a578063bc3377d91461063d57600080fd5b8063a69840a8146105dd578063a8f1f52e1461060457600080fd5b80637464fc3d1161012f5780637ecebe00116101145780637ecebe001461057757806392bc32191461059757806395d89b41146105a157600080fd5b80637464fc3d1461055b5780637ba0e2e71461056457600080fd5b80635a3d54931461050a578063627dd56a1461051357806367e4ac2c1461052657806370a082311461053b57600080fd5b80632a07b6c7116101f3578063499a3c50116101c257806354cf2aeb116101a757806354cf2aeb146104ba578063570ca735146104e15780635909c0d51461050157600080fd5b8063499a3c50146104805780634da318271461049357600080fd5b80632a07b6c7146103f857806330adf81f14610418578063313ce5671461043f5780633644e5151461045957600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd146103bc57806323b872dd146103c557806325a93264146103d857600080fd5b80630c0a0cd2146103495780630dfe16811461039557600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610326575b600080fd5b61028f61028a366004613788565b6106f7565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613938565b6102f3610d40565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610299565b610339610334366004613659565b610da9565b6040519015158152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b6103396103d33660046136b3565b610e22565b6000546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61040b610406366004613788565b610f9d565b60405161029991906138d3565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610447601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f61048e366004613788565b611309565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61028f60075481565b61028f60085481565b61028f610521366004613788565b611310565b61052e6116b4565b6040516102999190613879565b61028f6105493660046134a0565b60036020526000908152604090205481565b61028f60095481565b61028f610572366004613788565b6117b3565b61028f6105853660046134a0565b60056020526000908152604090205481565b61059f611ac8565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564435000000000000000000000000081565b61028f610612366004613788565b611bc3565b610339610625366004613659565b611dab565b61028f610638366004613788565b611e5d565b6001546103399074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61059f6106c73660046136f4565b612233565b61028f6106da366004613685565b600460209081526000928352604080842090915290825290205481565b6000600b5460011461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002600b556000808080806107818789018961350f565b94509450945094509450600160149054906101000a900460ff16156107a9576107a98461263b565b6000806000610807600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a6e5761088c85846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b98506108ba7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108f6908790600401613938565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b50505050600080610933612af6565b9150915086856dffffffffffffffffffffffffffff16830310156109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b6109c08282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a5f929190918252602082015260400190565b60405180910390a45050610d2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b610b4e85836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661279b565b9850610b7c7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610bb8908790600401613938565b600060405180830381600087803b158015610bd257600080fd5b505af1158015610be6573d6000803e3d6000fd5b50505050600080610bf5612af6565b9150915086846dffffffffffffffffffffffffffff1682031015610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b610c828282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610d21929190918252602082015260400190565b60405180910390a450505b50506001600b555094979650505050505050565b6000806000610d9e600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e119086815260200190565b60405180910390a350600192915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610e5157610e518361263b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610eee5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610ee89084906139db565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610f239084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8b9086815260200190565b60405180910390a35060019392505050565b6060600b5460011461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008061101f84860186613620565b9150915061102c8261263b565b600080600061108a600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061109b612af6565b60025430600090815260036020526040902054929450909250906110c087878461306f565b909101906000826110d1868461399e565b6110db9190613963565b90506000836110ea868561399e565b6110f49190613963565b9050611100308461311e565b61112c7f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b6111587f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b8186039550808503945061116f86868b8b8b612d6e565b61118161117c868861399e565b6131b4565b6009556040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161119a579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c60008151811061122157611221613ab5565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061128a5761128a613ab5565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550979a9950505050505050505050565b6000806000fd5b6000600b5460011461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611393858701876134c4565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113c7576113c78261263b565b6000806000611425600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611436612af6565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611500577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506114f482886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661279b565b9a508a8303925061161c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b5050600a546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f000000000000000000000000000000000000000000000000000000000000000090611614908390888116908a1661279b565b9a508a840393505b611628818c8b8b6127fe565b6116358484898989612d6e565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610d21929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061170857611708613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061177657611776613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600b54600114611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b556000611834838501856134a0565b905061183f8161263b565b600080600061189d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000806118ae612af6565b60025491935091506118c186868361306f565b0160006118de6dffffffffffffffffffffffffffff8816856139db565b905060006118fc6dffffffffffffffffffffffffffff8816856139db565b905060008061192d84848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff1661332c565b9092509050600061195561194183896139db565b61194b858b6139db565b61117c919061399e565b90508561197c5761196960006103e861342f565b6119756103e8826139db565b9c506119c4565b600061199e61117c6dffffffffffffffffffffffffffff808e16908f1661399e565b905080876119ac82856139db565b6119b6919061399e565b6119c09190613963565b9d50505b8c611a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e5445440000006044820152606401610761565b611a358c8e61342f565b611a4288888d8d8d612d6e565b611a4f61117c888a61399e565b60095560408051868152602081018690529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600b5550999c9b505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691611b65919061385d565b600060405180830381855afa9150503d8060008114611ba0576040519150601f19603f3d011682016040523d82523d6000602084013e611ba5565b606091505b5091505080806020019051810190611bbd91906137fa565b60065550565b60008080611bd384860186613659565b91509150600080611c33600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cbe57611cb783836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661279b565b9450611da1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b611d9e83826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611dda57611dda8361263b565b3360009081526003602052604081208054849290611df99084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e119086815260200190565b6000600b54600114611ecb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611ee0858701876134c4565b925092509250611eef8261263b565b6000806000611f4d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611f5e612af6565b6002543060009081526003602052604090205492945090925090611f8387878461306f565b90910190600082611f94868461399e565b611f9e9190613963565b9050600083611fad868561399e565b611fb79190613963565b9050611fc3308461311e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156120835761204682838b6dffffffffffffffffffffffffffff1603838b6dffffffffffffffffffffffffffff160361279b565b016120737f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b9b5050918a90039160008b6121a3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e0000000000000000000000006044820152606401610761565b61216781828a6dffffffffffffffffffffffffffff1603848c6dffffffffffffffffffffffffffff160361279b565b820191506121977f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b509a50928a9003928a60005b6121b086868b8b8b612d6e565b6121bd61117c868861399e565b600955604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550989b9a5050505050505050505050565b4284101561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761231883613a1e565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016123b99291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612442573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906124bd57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561263657600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916126d89161385d565b600060405180830381855afa9150503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915050600081806020019051810190612732919061376b565b905080612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c495354454400000000000000000000000000000000006044820152606401610761565b6000806127c87f00000000000000000000000000000000000000000000000000000000000000008661399e565b9050806127d76127108661399e565b6127e1919061394b565b6127eb848361399e565b6127f59190613963565b95945050505050565b8015612980576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f0000000000000000000000000000000000000000000000000000000000000000909116916128cd9161385d565b6000604051808303816000865af19150503d806000811461290a576040519150601f19603f3d011682016040523d82523d6000602084013e61290f565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c454400000000000000000000000000000000006044820152606401610761565b50612af0565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f00000000000000000000000000000000000000000000000000000000000000001691612a419161385d565b6000604051808303816000865af19150503d8060008114612a7e576040519150601f19603f3d011682016040523d82523d6000602084013e612a83565b606091505b5050905080612aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610761565b505b50505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec7f000000000000000000000000000000000000000000000000000000000000000030604051602401612b8c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612bda919061385d565b600060405180830381855afa9150503d8060008114612c15576040519150601f19603f3d011682016040523d82523d6000602084013e612c1a565b606091505b5091505080806020019051810190612c3291906137fa565b604080517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec0000000000000000000000000000000000000000000000000000000017905291519295506000927f000000000000000000000000000000000000000000000000000000000000000090921691612d0e919061385d565b600060405180830381855afa9150503d8060008114612d49576040519150601f19603f3d011682016040523d82523d6000602084013e612d4e565b606091505b5091505080806020019051810190612d6691906137fa565b925050509091565b6dffffffffffffffffffffffffffff8511801590612d9a57506dffffffffffffffffffffffffffff8411155b612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f570000000000000000000000000000000000000000000000006044820152606401610761565b600a547c0100000000000000000000000000000000000000000000000000000000900463ffffffff16612e8457600a80546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009092169088161717905561302f565b4263ffffffff80821690831614801590612ead57506dffffffffffffffffffffffffffff841615155b8015612ec857506dffffffffffffffffffffffffffff831615155b15612f8d5781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b1681612f1357612f13613a86565b600780549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff00000000000000000000000000001681612f6e57612f6e613a86565b0490508263ffffffff1681026008600082825401925050819055505050505b600a805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600954600090801561311657600061309d61117c6dffffffffffffffffffffffffffff80881690891661399e565b905081811115613114576127108160065484846130ba91906139db565b6130c4908861399e565b6130ce919061399e565b6130d89190613963565b6130e29190613963565b92508215613114576131147f00000000000000000000000000000000000000000000000000000000000000008461342f565b505b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906131539084906139db565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000816131c357506000919050565b81600170010000000000000000000000000000000082106131e95760809190911c9060401b5b6801000000000000000082106132045760409190911c9060201b5b640100000000821061321b5760209190911c9060101b5b6201000082106132305760109190911c9060081b5b61010082106132445760089190911c9060041b5b601082106132575760049190911c9060021b5b600882106132635760011b5b600181858161327457613274613a86565b048201901c9050600181858161328c5761328c613a86565b048201901c905060018185816132a4576132a4613a86565b048201901c905060018185816132bc576132bc613a86565b048201901c905060018185816132d4576132d4613a86565b048201901c905060018185816132ec576132ec613a86565b048201901c9050600181858161330457613304613a86565b048201901c9050600081858161331c5761331c613a86565b04905080821061311657806127f5565b60008083158061333a575082155b1561334a57506000905080613426565b600084613357858961399e565b6133619190613963565b90508581116133bc57613377612710600261399e565b61338182886139db565b6133ab907f000000000000000000000000000000000000000000000000000000000000000061399e565b6133b59190613963565b9150613424565b6000846133c9878961399e565b6133d39190613963565b90506133e2612710600261399e565b6133ec828a6139db565b613416907f000000000000000000000000000000000000000000000000000000000000000061399e565b6134209190613963565b9350505b505b94509492505050565b8060026000828254613441919061394b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016131a8565b6000602082840312156134b257600080fd5b81356134bd81613b13565b9392505050565b6000806000606084860312156134d957600080fd5b83356134e481613b13565b925060208401356134f481613b13565b9150604084013561350481613b38565b809150509250925092565b600080600080600060a0868803121561352757600080fd5b853561353281613b13565b9450602086013561354281613b13565b9350604086013561355281613b38565b925060608601359150608086013567ffffffffffffffff8082111561357657600080fd5b818801915088601f83011261358a57600080fd5b81358181111561359c5761359c613ae4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156135e2576135e2613ae4565b816040528281528b60208487010111156135fb57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561363357600080fd5b823561363e81613b13565b9150602083013561364e81613b38565b809150509250929050565b6000806040838503121561366c57600080fd5b823561367781613b13565b946020939093013593505050565b6000806040838503121561369857600080fd5b82356136a381613b13565b9150602083013561364e81613b13565b6000806000606084860312156136c857600080fd5b83356136d381613b13565b925060208401356136e381613b13565b929592945050506040919091013590565b600080600080600080600060e0888a03121561370f57600080fd5b873561371a81613b13565b9650602088013561372a81613b13565b95506040880135945060608801359350608088013560ff8116811461374e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561377d57600080fd5b81516134bd81613b38565b6000806020838503121561379b57600080fd5b823567ffffffffffffffff808211156137b357600080fd5b818501915085601f8301126137c757600080fd5b8135818111156137d657600080fd5b8660208285010111156137e857600080fd5b60209290920196919550909350505050565b60006020828403121561380c57600080fd5b5051919050565b6000815180845261382b8160208601602086016139f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161386f8184602087016139f2565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156138c757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613895565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561392b578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016138f0565b5091979650505050505050565b6020815260006134bd6020830184613813565b6000821982111561395e5761395e613a57565b500190565b600082613999577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d6576139d6613a57565b500290565b6000828210156139ed576139ed613a57565b500390565b60005b83811015613a0d5781810151838201526020016139f5565b83811115612af05750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5057613a50613a57565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613b3557600080fd5b50565b8015158114613b3557600080fdfea26469706673582212209f642184248699c158c18322f8dca2de6fe2cc065d00eb82ed365836d516447c64736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102775760003560e01c80635a3d549311610160578063a69840a8116100d8578063c14ad8021161008c578063d21220a711610071578063d21220a714610692578063d505accf146106b9578063dd62ed3e146106cc57600080fd5b8063c14ad80214610662578063cf58879a1461066b57600080fd5b8063a9059cbb116100bd578063a9059cbb14610617578063af8c09bf1461062a578063bc3377d91461063d57600080fd5b8063a69840a8146105dd578063a8f1f52e1461060457600080fd5b80637464fc3d1161012f5780637ecebe00116101145780637ecebe001461057757806392bc32191461059757806395d89b41146105a157600080fd5b80637464fc3d1461055b5780637ba0e2e71461056457600080fd5b80635a3d54931461050a578063627dd56a1461051357806367e4ac2c1461052657806370a082311461053b57600080fd5b80632a07b6c7116101f3578063499a3c50116101c257806354cf2aeb116101a757806354cf2aeb146104ba578063570ca735146104e15780635909c0d51461050157600080fd5b8063499a3c50146104805780634da318271461049357600080fd5b80632a07b6c7146103f857806330adf81f14610418578063313ce5671461043f5780633644e5151461045957600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd146103bc57806323b872dd146103c557806325a93264146103d857600080fd5b80630c0a0cd2146103495780630dfe16811461039557600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610326575b600080fd5b61028f61028a366004613788565b6106f7565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613938565b6102f3610d40565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610299565b610339610334366004613659565b610da9565b6040519015158152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b6103396103d33660046136b3565b610e22565b6000546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61040b610406366004613788565b610f9d565b60405161029991906138d3565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610447601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f61048e366004613788565b611309565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61028f60075481565b61028f60085481565b61028f610521366004613788565b611310565b61052e6116b4565b6040516102999190613879565b61028f6105493660046134a0565b60036020526000908152604090205481565b61028f60095481565b61028f610572366004613788565b6117b3565b61028f6105853660046134a0565b60056020526000908152604090205481565b61059f611ac8565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564435000000000000000000000000081565b61028f610612366004613788565b611bc3565b610339610625366004613659565b611dab565b61028f610638366004613788565b611e5d565b6001546103399074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61059f6106c73660046136f4565b612233565b61028f6106da366004613685565b600460209081526000928352604080842090915290825290205481565b6000600b5460011461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002600b556000808080806107818789018961350f565b94509450945094509450600160149054906101000a900460ff16156107a9576107a98461263b565b6000806000610807600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a6e5761088c85846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b98506108ba7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108f6908790600401613938565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b50505050600080610933612af6565b9150915086856dffffffffffffffffffffffffffff16830310156109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b6109c08282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a5f929190918252602082015260400190565b60405180910390a45050610d2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b610b4e85836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661279b565b9850610b7c7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610bb8908790600401613938565b600060405180830381600087803b158015610bd257600080fd5b505af1158015610be6573d6000803e3d6000fd5b50505050600080610bf5612af6565b9150915086846dffffffffffffffffffffffffffff1682031015610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b610c828282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610d21929190918252602082015260400190565b60405180910390a450505b50506001600b555094979650505050505050565b6000806000610d9e600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e119086815260200190565b60405180910390a350600192915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610e5157610e518361263b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610eee5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610ee89084906139db565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610f239084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8b9086815260200190565b60405180910390a35060019392505050565b6060600b5460011461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008061101f84860186613620565b9150915061102c8261263b565b600080600061108a600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061109b612af6565b60025430600090815260036020526040902054929450909250906110c087878461306f565b909101906000826110d1868461399e565b6110db9190613963565b90506000836110ea868561399e565b6110f49190613963565b9050611100308461311e565b61112c7f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b6111587f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b8186039550808503945061116f86868b8b8b612d6e565b61118161117c868861399e565b6131b4565b6009556040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161119a579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c60008151811061122157611221613ab5565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061128a5761128a613ab5565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550979a9950505050505050505050565b6000806000fd5b6000600b5460011461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611393858701876134c4565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113c7576113c78261263b565b6000806000611425600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611436612af6565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611500577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506114f482886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661279b565b9a508a8303925061161c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b5050600a546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f000000000000000000000000000000000000000000000000000000000000000090611614908390888116908a1661279b565b9a508a840393505b611628818c8b8b6127fe565b6116358484898989612d6e565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610d21929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061170857611708613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061177657611776613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600b54600114611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b556000611834838501856134a0565b905061183f8161263b565b600080600061189d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000806118ae612af6565b60025491935091506118c186868361306f565b0160006118de6dffffffffffffffffffffffffffff8816856139db565b905060006118fc6dffffffffffffffffffffffffffff8816856139db565b905060008061192d84848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff1661332c565b9092509050600061195561194183896139db565b61194b858b6139db565b61117c919061399e565b90508561197c5761196960006103e861342f565b6119756103e8826139db565b9c506119c4565b600061199e61117c6dffffffffffffffffffffffffffff808e16908f1661399e565b905080876119ac82856139db565b6119b6919061399e565b6119c09190613963565b9d50505b8c611a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e5445440000006044820152606401610761565b611a358c8e61342f565b611a4288888d8d8d612d6e565b611a4f61117c888a61399e565b60095560408051868152602081018690529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600b5550999c9b505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691611b65919061385d565b600060405180830381855afa9150503d8060008114611ba0576040519150601f19603f3d011682016040523d82523d6000602084013e611ba5565b606091505b5091505080806020019051810190611bbd91906137fa565b60065550565b60008080611bd384860186613659565b91509150600080611c33600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cbe57611cb783836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661279b565b9450611da1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b611d9e83826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611dda57611dda8361263b565b3360009081526003602052604081208054849290611df99084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e119086815260200190565b6000600b54600114611ecb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611ee0858701876134c4565b925092509250611eef8261263b565b6000806000611f4d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611f5e612af6565b6002543060009081526003602052604090205492945090925090611f8387878461306f565b90910190600082611f94868461399e565b611f9e9190613963565b9050600083611fad868561399e565b611fb79190613963565b9050611fc3308461311e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156120835761204682838b6dffffffffffffffffffffffffffff1603838b6dffffffffffffffffffffffffffff160361279b565b016120737f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b9b5050918a90039160008b6121a3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e0000000000000000000000006044820152606401610761565b61216781828a6dffffffffffffffffffffffffffff1603848c6dffffffffffffffffffffffffffff160361279b565b820191506121977f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b509a50928a9003928a60005b6121b086868b8b8b612d6e565b6121bd61117c868861399e565b600955604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550989b9a5050505050505050505050565b4284101561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761231883613a1e565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016123b99291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612442573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906124bd57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561263657600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916126d89161385d565b600060405180830381855afa9150503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915050600081806020019051810190612732919061376b565b905080612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c495354454400000000000000000000000000000000006044820152606401610761565b6000806127c87f00000000000000000000000000000000000000000000000000000000000000008661399e565b9050806127d76127108661399e565b6127e1919061394b565b6127eb848361399e565b6127f59190613963565b95945050505050565b8015612980576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f0000000000000000000000000000000000000000000000000000000000000000909116916128cd9161385d565b6000604051808303816000865af19150503d806000811461290a576040519150601f19603f3d011682016040523d82523d6000602084013e61290f565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c454400000000000000000000000000000000006044820152606401610761565b50612af0565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f00000000000000000000000000000000000000000000000000000000000000001691612a419161385d565b6000604051808303816000865af19150503d8060008114612a7e576040519150601f19603f3d011682016040523d82523d6000602084013e612a83565b606091505b5050905080612aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610761565b505b50505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec7f000000000000000000000000000000000000000000000000000000000000000030604051602401612b8c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612bda919061385d565b600060405180830381855afa9150503d8060008114612c15576040519150601f19603f3d011682016040523d82523d6000602084013e612c1a565b606091505b5091505080806020019051810190612c3291906137fa565b604080517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec0000000000000000000000000000000000000000000000000000000017905291519295506000927f000000000000000000000000000000000000000000000000000000000000000090921691612d0e919061385d565b600060405180830381855afa9150503d8060008114612d49576040519150601f19603f3d011682016040523d82523d6000602084013e612d4e565b606091505b5091505080806020019051810190612d6691906137fa565b925050509091565b6dffffffffffffffffffffffffffff8511801590612d9a57506dffffffffffffffffffffffffffff8411155b612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f570000000000000000000000000000000000000000000000006044820152606401610761565b600a547c0100000000000000000000000000000000000000000000000000000000900463ffffffff16612e8457600a80546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009092169088161717905561302f565b4263ffffffff80821690831614801590612ead57506dffffffffffffffffffffffffffff841615155b8015612ec857506dffffffffffffffffffffffffffff831615155b15612f8d5781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b1681612f1357612f13613a86565b600780549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff00000000000000000000000000001681612f6e57612f6e613a86565b0490508263ffffffff1681026008600082825401925050819055505050505b600a805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600954600090801561311657600061309d61117c6dffffffffffffffffffffffffffff80881690891661399e565b905081811115613114576127108160065484846130ba91906139db565b6130c4908861399e565b6130ce919061399e565b6130d89190613963565b6130e29190613963565b92508215613114576131147f00000000000000000000000000000000000000000000000000000000000000008461342f565b505b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906131539084906139db565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000816131c357506000919050565b81600170010000000000000000000000000000000082106131e95760809190911c9060401b5b6801000000000000000082106132045760409190911c9060201b5b640100000000821061321b5760209190911c9060101b5b6201000082106132305760109190911c9060081b5b61010082106132445760089190911c9060041b5b601082106132575760049190911c9060021b5b600882106132635760011b5b600181858161327457613274613a86565b048201901c9050600181858161328c5761328c613a86565b048201901c905060018185816132a4576132a4613a86565b048201901c905060018185816132bc576132bc613a86565b048201901c905060018185816132d4576132d4613a86565b048201901c905060018185816132ec576132ec613a86565b048201901c9050600181858161330457613304613a86565b048201901c9050600081858161331c5761331c613a86565b04905080821061311657806127f5565b60008083158061333a575082155b1561334a57506000905080613426565b600084613357858961399e565b6133619190613963565b90508581116133bc57613377612710600261399e565b61338182886139db565b6133ab907f000000000000000000000000000000000000000000000000000000000000000061399e565b6133b59190613963565b9150613424565b6000846133c9878961399e565b6133d39190613963565b90506133e2612710600261399e565b6133ec828a6139db565b613416907f000000000000000000000000000000000000000000000000000000000000000061399e565b6134209190613963565b9350505b505b94509492505050565b8060026000828254613441919061394b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016131a8565b6000602082840312156134b257600080fd5b81356134bd81613b13565b9392505050565b6000806000606084860312156134d957600080fd5b83356134e481613b13565b925060208401356134f481613b13565b9150604084013561350481613b38565b809150509250925092565b600080600080600060a0868803121561352757600080fd5b853561353281613b13565b9450602086013561354281613b13565b9350604086013561355281613b38565b925060608601359150608086013567ffffffffffffffff8082111561357657600080fd5b818801915088601f83011261358a57600080fd5b81358181111561359c5761359c613ae4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156135e2576135e2613ae4565b816040528281528b60208487010111156135fb57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561363357600080fd5b823561363e81613b13565b9150602083013561364e81613b38565b809150509250929050565b6000806040838503121561366c57600080fd5b823561367781613b13565b946020939093013593505050565b6000806040838503121561369857600080fd5b82356136a381613b13565b9150602083013561364e81613b13565b6000806000606084860312156136c857600080fd5b83356136d381613b13565b925060208401356136e381613b13565b929592945050506040919091013590565b600080600080600080600060e0888a03121561370f57600080fd5b873561371a81613b13565b9650602088013561372a81613b13565b95506040880135945060608801359350608088013560ff8116811461374e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561377d57600080fd5b81516134bd81613b38565b6000806020838503121561379b57600080fd5b823567ffffffffffffffff808211156137b357600080fd5b818501915085601f8301126137c757600080fd5b8135818111156137d657600080fd5b8660208285010111156137e857600080fd5b60209290920196919550909350505050565b60006020828403121561380c57600080fd5b5051919050565b6000815180845261382b8160208601602086016139f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161386f8184602087016139f2565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156138c757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613895565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561392b578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016138f0565b5091979650505050505050565b6020815260006134bd6020830184613813565b6000821982111561395e5761395e613a57565b500190565b600082613999577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d6576139d6613a57565b500290565b6000828210156139ed576139ed613a57565b500390565b60005b83811015613a0d5781810151838201526020016139f5565b83811115612af05750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5057613a50613a57565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613b3557600080fd5b50565b8015158114613b3557600080fdfea26469706673582212209f642184248699c158c18322f8dca2de6fe2cc065d00eb82ed365836d516447c64736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
