{
  "_format": "hh-sol-artifact-1",
  "contractName": "MVM_CanonicalTransaction",
  "sourceName": "contracts/MVM/MVM_CanonicalTransaction.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint40",
          "name": "_shouldStartAtElement",
          "type": "uint40"
        },
        {
          "indexed": false,
          "internalType": "uint24",
          "name": "_totalElementsToAppend",
          "type": "uint24"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_txBatchSize",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_txBatchTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_root",
          "type": "bytes32"
        }
      ],
      "name": "AppendBatchElement",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_stakeAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_verified",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_sequencer",
          "type": "bool"
        }
      ],
      "name": "SetBatchTxData",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "VerifierStake",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CONFIG_OWNER_KEY",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TXDATA_SUBMIT_TIMEOUT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "appendSequencerBatchByChainId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "checkBatchTxHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "txHash",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "verified",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "disableWhiteList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getBatchTxData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "txData",
          "type": "bytes"
        },
        {
          "internalType": "bool",
          "name": "verified",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getStakeBaseCost",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        }
      ],
      "name": "getStakeCostByBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getStakeSeqSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getStakeUnitCost",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTxBatchSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTxDataSliceCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTxDataSliceSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_verifier",
          "type": "address"
        }
      ],
      "name": "isWhiteListed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "libAddressManager",
      "outputs": [
        {
          "internalType": "contract Lib_AddressManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        }
      ],
      "name": "resolve",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_leafIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalLeaves",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "_proof",
          "type": "bytes32[]"
        }
      ],
      "name": "setBatchTxDataForStake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "setBatchTxDataForVerifier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_verified",
          "type": "bool"
        }
      ],
      "name": "setBatchTxDataVerified",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_stakeBaseCost",
          "type": "uint256"
        }
      ],
      "name": "setStakeBaseCost",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_seconds",
          "type": "uint256"
        }
      ],
      "name": "setStakeSeqSeconds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_stakeUnitCost",
          "type": "uint256"
        }
      ],
      "name": "setStakeUnitCost",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_size",
          "type": "uint256"
        }
      ],
      "name": "setTxBatchSize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_count",
          "type": "uint256"
        }
      ],
      "name": "setTxDataSliceCount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_size",
          "type": "uint256"
        }
      ],
      "name": "setTxDataSliceSize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_verifier",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_allowed",
          "type": "bool"
        }
      ],
      "name": "setWhiteList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakeBaseCost",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakeSeqSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakeUnitCost",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "txBatchSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "txDataSliceCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "txDataSliceSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "verifierStake",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "whitelist",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "withdrawStake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055614294806100306000396000f3fe6080604052600436106102335760003560e01c80637600fa1211610138578063a6a56da5116100b0578063d6a97a341161007f578063f137391611610064578063f137391614610629578063f1e7746114610649578063f6f24f671461066957600080fd5b8063d6a97a34146105ff578063dcd836161461061457600080fd5b8063a6a56da51461058c578063a8cda37b1461059f578063b357ab92146105b4578063d5fb60d9146105ca57600080fd5b806386e4206e116101075780639447fe88116100ec5780639447fe88146105265780639b19251a1461053c578063a5f5e7191461056c57600080fd5b806386e4206e146104e65780638d14e1271461050657600080fd5b80637600fa12146104705780637f9c97771461049057806381147877146104b057806383cbbb6d146104c657600080fd5b80633ac19597116101cb5780634e74b1551161019a57806361f4edea1161017f57806361f4edea146103cc578063669fdeb5146103fa5780636f9170f61461044057600080fd5b80634e74b155146103a25780635e7ce13a146103b757600080fd5b80633ac1959714610337578063461a44781461035757806348406b861461037757806348f241651461038d57600080fd5b8063279f9b1111610207578063279f9b11146102a9578063299ca478146102c957806335005ffb1461030157806338897fdd1461032157600080fd5b806213c63d1461023857806302adf2d61461025c578063167c705014610271578063172e218d14610287575b600080fd5b34801561024457600080fd5b506002545b6040519081526020015b60405180910390f35b34801561026857600080fd5b50600454610249565b34801561027d57600080fd5b5061024960045481565b34801561029357600080fd5b506102a76102a2366004613a6d565b61067f565b005b3480156102b557600080fd5b506102a76102c4366004613aac565b6108c5565b3480156102d557600080fd5b506000546102e9906001600160a01b031681565b6040516001600160a01b039091168152602001610253565b34801561030d57600080fd5b506102a761031c366004613ad8565b610d42565b34801561032d57600080fd5b5061024960015481565b34801561034357600080fd5b506102a7610352366004613ad8565b610eb0565b34801561036357600080fd5b506102e9610372366004613ba9565b610f7d565b34801561038357600080fd5b5061024960065481565b34801561039957600080fd5b50600654610249565b3480156103ae57600080fd5b50600354610249565b3480156103c357600080fd5b50600554610249565b3480156103d857600080fd5b506103ec6103e7366004613aac565b61100e565b604051610253929190613c4e565b34801561040657600080fd5b506104336040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b81525081565b6040516102539190613c72565b34801561044c57600080fd5b5061046061045b366004613c9d565b6111aa565b6040519015158152602001610253565b34801561047c57600080fd5b5061024961048b366004613cba565b6111d9565b34801561049c57600080fd5b506102a76104ab366004613ad8565b6112d3565b3480156104bc57600080fd5b5061024960055481565b3480156104d257600080fd5b506102a76104e1366004613cfc565b611441565b3480156104f257600080fd5b506102a7610501366004613ad8565b611971565b34801561051257600080fd5b506102a7610521366004613df9565b611adf565b34801561053257600080fd5b5061024960025481565b34801561054857600080fd5b50610460610557366004613c9d565b60086020526000908152604090205460ff1681565b34801561057857600080fd5b506102a7610587366004613ad8565b611bdc565b6102a761059a366004613aac565b611ca9565b3480156105ab57600080fd5b506102a761231c565b3480156105c057600080fd5b5061024960035481565b3480156105d657600080fd5b506105ea6105e5366004613e2e565b61278e565b60408051928352901515602083015201610253565b34801561060b57600080fd5b50600154610249565b34801561062057600080fd5b506102a76128ba565b34801561063557600080fd5b506102a7610644366004613ad8565b61298e565b34801561065557600080fd5b506102a7610664366004613e2e565b612afc565b34801561067557600080fd5b5061024961070881565b6106ad6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b03161461074c5760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a4015b60405180910390fd5b6000848152600c6020908152604080832085845290915281206003015490036107b75760405162461bcd60e51b815260206004820152601660248201527f7478206461746120646f6573206e6f74206578697374000000000000000000006044820152606401610743565b6000848152600c6020908152604080832085845290915290206002015483146108225760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000848152600c6020908152604080832085845290915290206005015481151560ff9091161515036108965760405162461bcd60e51b815260206004820152601a60248201527f766572696669656420737461747573206e6f74206368616e67650000000000006044820152606401610743565b6000938452600c602090815260408086209386529290529220600501805460ff19169215159290921790915550565b6000838152600b602090815260408083208484529091529020600301546109545760405162461bcd60e51b815260206004820152602660248201527f7468657265206973206e6f207374616b6520666f72207468697320626174636860448201527f20696e64657800000000000000000000000000000000000000000000000000006064820152608401610743565b6000838152600b602090815260408083208484529091529020600501546109bd5760405162461bcd60e51b815260206004820152601460248201527f7374616b6520616d6f756e74206973207a65726f0000000000000000000000006044820152606401610743565b6000838152600b6020908152604080832084845290915281206006015460ff1660038111156109ee576109ee613e88565b14610a3b5760405162461bcd60e51b815260206004820152601b60248201527f7769746864726177616c7320617265206e6f7420616c6c6f77656400000000006044820152606401610743565b6000838152600b602090815260408083208484529091529020546001600160a01b03163314610aac5760405162461bcd60e51b815260206004820152601e60248201527f63616e206e6f74207769746864726177206f746865722773207374616b6500006044820152606401610743565b6000838152600b602090815260408083208484529091529020600401544211610b3d5760405162461bcd60e51b815260206004820152602960248201527f63616e206e6f7420776974686472617720647572696e67207375626d6974207060448201527f726f74656374696f6e00000000000000000000000000000000000000000000006064820152608401610743565b33600090815260096020908152604080832054868452600b8352818420858552909252909120600501541115610bb55760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e74207374616b6500000000000000000000000000006044820152606401610743565b6000838152600b60209081526040808320848452909152902060050154471015610c215760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b6000838152600b60209081526040808320848452825280832060068101805460ff191660031790556005015433845260099092528220805491929091610c68908490613ee6565b90915550506000838152600b602090815260408083208484529091528082206005015490513391908381818185875af1925050503d8060008114610cc8576040519150601f19603f3d011682016040523d82523d6000602084013e610ccd565b606091505b5050905080610d1e5760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b506000928352600b6020908152604080852092855291905282206005019190915550565b610d706040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614610e0a5760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b60008111610e5a5760405162461bcd60e51b815260206004820152601660248201527f736c6963652073697a652073686f756c642067742030000000000000000000006044820152606401610743565b6001548103610eab5760405162461bcd60e51b815260206004820152601a60248201527f736c6963652073697a6520686173206e6f74206368616e6765640000000000006044820152606401610743565b600155565b610ede6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614610f785760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b600655565b600080546040517fbf40fac10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf40fac190610fc7908590600401613c72565b602060405180830381865afa158015610fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110089190613efd565b92915050565b6000838152600c6020908152604080832084845290915281206003015460609190810361107d5760405162461bcd60e51b815260206004820152601660248201527f7478206461746120646f6573206e6f74206578697374000000000000000000006044820152606401610743565b6000858152600c6020908152604080832086845290915290206002015484146110e85760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000858152600c602090815260408083208684529091529020600581015460049091018054909160ff1690829061111e90613f1a565b80601f016020809104026020016040519081016040528092919081815260200182805461114a90613f1a565b80156111975780601f1061116c57610100808354040283529160200191611197565b820191906000526020600020905b81548152906001019060200180831161117a57829003601f168201915b5050505050915091509150935093915050565b60075460009060ff1615806110085750506001600160a01b031660009081526008602052604090205460ff1690565b6000806003541161122c5760405162461bcd60e51b815260206004820152601e60248201527f7374616b65206261736520636f7374206e6f7420636f6e6669672079657400006044820152606401610743565b6000838152600a602090815260408083208584529091529020600201546112955760405162461bcd60e51b815260206004820152601c60248201527f626174636820656c656d656e7420646f6573206e6f74206578697374000000006044820152606401610743565b6006546000848152600a602090815260408083208684529091529020600101546112bf9190613f6d565b6003546112cc9190613f8c565b9392505050565b6113016040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b03161461139b5760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b600081116113eb5760405162461bcd60e51b815260206004820152601760248201527f736c69636520636f756e742073686f756c6420677420300000000000000000006044820152606401610743565b600454810361143c5760405162461bcd60e51b815260206004820152601b60248201527f736c69636520636f756e7420686173206e6f74206368616e67656400000000006044820152606401610743565b600455565b61147161144d886130cd565b60405160200161145d9190613fa4565b604051602081830303815290604052610f7d565b6001600160a01b0316336001600160a01b0316146114f75760405162461bcd60e51b815260206004820152602d60248201527f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279207460448201527f68652053657175656e6365722e000000000000000000000000000000000000006064820152608401610743565b6000878152600b602090815260408083208884529091529020600301546115865760405162461bcd60e51b815260206004820152602760248201527f7468657265206973206e6f207374616b6520666f72207468697320626c6f636b60448201527f206e756d626572000000000000000000000000000000000000000000000000006064820152608401610743565b6000878152600b6020908152604080832088845290915290206002015486146115f15760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000878152600b6020908152604080832088845290915281206006015460ff16600381111561162257611622613e88565b1461166f5760405162461bcd60e51b815260206004820152601560248201527f6e6f7420616c6c6f77656420746f207375626d697400000000000000000000006044820152606401610743565b61168087878787878787600161322d565b6000878152600b6020908152604080832088845290915281206006015460ff1660038111156116b1576116b1613e88565b036118f3576000878152600b6020908152604080832088845280835281842080546001600160a01b0316855260098452918420549389905290915260050154111561173e5760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e74207374616b6500000000000000000000000000006044820152606401610743565b6000878152600b602090815260408083208884529091529020600501544710156117aa5760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b6000878152600b60209081526040808320888452909152902060068101805460ff1916600117905560050154156118f3576000878152600b602090815260408083208884528252808320600581015490546001600160a01b031684526009909252822080549192909161181e908490613ee6565b90915550506000878152600b602090815260408083208884529091528082206005015490513391908381818185875af1925050503d806000811461187e576040519150601f19603f3d011682016040523d82523d6000602084013e611883565b606091505b50509050806118d45760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b506000878152600b602090815260408083208884529091528120600501555b6000878152600b602090815260408083208884528252918290206005015482513381529182018a9052818301899052606082018890526080820152600160a0820181905260c082015290517ffa136ae724a018470beba9749c1fdfb83177d6bd6aaaab35d6dbfde739e509109181900360e00190a150505050505050565b61199f6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614611a395760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b60008111611a895760405162461bcd60e51b815260206004820152601660248201527f62617463682073697a652073686f756c642067742030000000000000000000006044820152606401610743565b6005548103611ada5760405162461bcd60e51b815260206004820152601a60248201527f62617463682073697a6520686173206e6f74206368616e6765640000000000006044820152606401610743565b600555565b611b0d6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614611ba75760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b6001600160a01b039091166000908152600860205260409020805491151560ff19928316179055600780549091166001179055565b611c0a6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614611ca45760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b600355565b611cb2336111aa565b611d245760405162461bcd60e51b815260206004820152602360248201527f6f6e6c792077686974656c6973746564207665726966696572732063616e206360448201527f616c6c00000000000000000000000000000000000000000000000000000000006064820152608401610743565b346000611d3185856111d9565b9050600060035411611d855760405162461bcd60e51b815260206004820152601e60248201527f7374616b65206261736520636f7374206e6f7420636f6e6669672079657400006044820152606401610743565b818114611dd45760405162461bcd60e51b815260206004820152601460248201527f7374616b6520636f737420696e636f72726563740000000000000000000000006044820152606401610743565b600060025411611e4c5760405162461bcd60e51b815260206004820152602760248201527f73657175656e636572207375626d6974207365636f6e6473206e6f7420636f6e60448201527f66696720796574000000000000000000000000000000000000000000000000006064820152608401610743565b6000858152600a60209081526040808320878452909152902060020154611eb55760405162461bcd60e51b815260206004820152601c60248201527f626174636820656c656d656e7420646f6573206e6f74206578697374000000006044820152606401610743565b6000858152600a602090815260408083208784529091529020548390611ef19064ffffffffff81169065010000000000900462ffffff16613fe5565b64ffffffffff1610158015611f2557506000858152600a6020908152604080832087845290915290205464ffffffffff1683115b611f975760405162461bcd60e51b815260206004820152602160248201527f626c6f636b206e756d626572206973206e6f7420696e2074686973206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610743565b6000858152600b602090815260408083208684529091529020600301541561205f5760036000868152600b6020908152604080832087845290915290206006015460ff166003811115611fec57611fec613e88565b1461205f5760405162461bcd60e51b815260206004820152602560248201527f74686572652069732061207374616b6520666f7220746869732062617463682060448201527f696e6465780000000000000000000000000000000000000000000000000000006064820152608401610743565b600061209f6040518060400160405280601481526020017f5374617465436f6d6d69746d656e74436861696e000000000000000000000000815250610f7d565b905042816001600160a01b031663c17b291b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612104919061400e565b6000888152600a602090815260408083208a845290915290206004015461212b9190613f8c565b1161219e5760405162461bcd60e51b815260206004820152602e60248201527f746865206261746368206973206f757473696465206f6620746865206672617560448201527f642070726f6f662077696e646f770000000000000000000000000000000000006064820152608401610743565b6040518060e00160405280336001600160a01b03168152602001858152602001868152602001428152602001600254426121d89190613f8c565b815260208101859052604001600090526000878152600b60209081526040808320888452825291829020835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781559083015160018083019190915591830151600282015560608301516003808301919091556080840151600483015560a0840151600583015560c084015160068301805493949193909260ff199091169190849081111561229857612298613e88565b02179055505033600090815260096020526040812080548693509091906122c0908490613f8c565b9091555050604080513381526020810188905290810186905260608101859052608081018490527f918b3eda1688b2f6d3e6d173db1ec863e43f4d1c369d647b1912b0df8be5f12f9060a00160405180910390a1505050505050565b60043560243560d81c60293560e890811c90602c35901c600036818061234461144d896130cd565b6001600160a01b0316336001600160a01b0316146123ca5760405162461bcd60e51b815260206004820152602d60248201527f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279207460448201527f68652053657175656e6365722e000000000000000000000000000000000000006064820152608401610743565b60006123d7866010614027565b6123e290602f614052565b62ffffff169050808411156124815760006123fe826007613f8c565b9050600061240d83600b613f8c565b600554843560cc1c9850833560e01c965081359550909150612430600287614070565b111561247e5760405162461bcd60e51b815260206004820152601c60248201527f73697a65206f66207478206461746120697320746f6f206c61726765000000006044820152606401610743565b50505b60006124c16040518060400160405280601981526020017f43616e6f6e6963616c5472616e73616374696f6e436861696e00000000000000815250610f7d565b90506000816001600160a01b031663cfdf677e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125279190613efd565b6040517f576f2588000000000000000000000000000000000000000000000000000000008152600481018d90529091506000906001600160a01b0383169063576f258890602401602060405180830381865afa15801561258b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125af919061400e565b9050600080846001600160a01b03166000366040516125cf9291906140ab565b6000604051808303816000865af19150503d806000811461260c576040519150601f19603f3d011682016040523d82523d6000602084013e612611565b606091505b50909250905081151560000361262e576040513d806000833e8082fd5b50506040518060c001604052808c64ffffffffff1681526020018b62ffffff16815260200187815260200189815260200186815260200142815250600a60008e8152602001908152602001600020600083815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548162ffffff021916908362ffffff16021790555060408201518160010155606082015181600201556080820151816003015560a082015181600401559050507f77e48e0d46be115d5fe8dd03f4dbf8eb309c5fdc8ffdcbe6f8eaa5bd6c65aed98c828d8d8a8d8b6040516127789796959493929190968752602087019590955264ffffffffff93909316604086015262ffffff919091166060850152608084015260a083015260c082015260e00190565b60405180910390a1505050505050505050505050565b6000848152600c60209081526040808320858452909152812060030154819081036127fb5760405162461bcd60e51b815260206004820152601660248201527f7478206461746120646f6573206e6f74206578697374000000000000000000006044820152606401610743565b6000868152600c6020908152604080832087845290915290206002015485146128665760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b83836040516020016128799291906140bb565b60408051601f1981840301815291815281516020928301206000898152600c845282812088825290935291206005015490925060ff16905094509492505050565b6128e86040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b0316146129825760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b6007805460ff19169055565b6129bc6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614612a565760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b60008111612aa65760405162461bcd60e51b815260206004820152601360248201527f7365636f6e64732073686f756c642067742030000000000000000000000000006044820152606401610743565b6002548103612af75760405162461bcd60e51b815260206004820152601760248201527f7365636f6e647320686173206e6f74206368616e6765640000000000000000006044820152606401610743565b600255565b612b0861144d856130cd565b6001600160a01b03163303612b855760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e2063616e206e6f742062652063616c6c656420627920746860448201527f652053657175656e6365722e00000000000000000000000000000000000000006064820152608401610743565b6000848152600b60209081526040808320858452909152902060030154612c145760405162461bcd60e51b815260206004820152602760248201527f7468657265206973206e6f207374616b6520666f72207468697320626c6f636b60448201527f206e756d626572000000000000000000000000000000000000000000000000006064820152608401610743565b6000848152600b602090815260408083208584529091529020600201548314612c7f5760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000848152600b602090815260408083208584529091529020600401544211612d105760405162461bcd60e51b815260206004820152603160248201527f63616e206e6f74207375626d697420647572696e672073657175656e6365722060448201527f7375626d69742070726f74656374696f6e0000000000000000000000000000006064820152608401610743565b6000848152600b602090815260408083208584529091529020546001600160a01b03163314612dd7576002546000858152600b602090815260408083208684529091529020600401544291612d6491613f8c565b10612dd75760405162461bcd60e51b815260206004820152602e60248201527f63616e206e6f74207375626d697420647572696e67207374616b65722073756260448201527f6d69742070726f74656374696f6e0000000000000000000000000000000000006064820152608401610743565b612e138484848460008080604051908082528060200260200182016040528015612e0b578160200160208202803683370190505b50600061322d565b6000848152600b6020908152604080832085845290915281206006015460ff166003811115612e4457612e44613e88565b03613051576000848152600b6020908152604080832085845280835281842060068101805460ff1916600217905580546001600160a01b03168086526009855292852054948790529252600590910154909110801590612ebf57506000858152600b6020908152604080832086845290915290206005015415155b1561304f576000858152600b60209081526040808320868452909152902060050154471015612f305760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b6000858152600b602090815260408083208684528252808320600501546001600160a01b038516845260099092528220805491929091612f71908490613ee6565b90915550506000858152600b602090815260408083208684529091528082206005015490516001600160a01b03841691908381818185875af1925050503d8060008114612fda576040519150601f19603f3d011682016040523d82523d6000602084013e612fdf565b606091505b50509050806130305760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b506000858152600b602090815260408083208684529091528120600501555b505b6000848152600b60209081526040808320858452825280832060050154815133815292830188905290820186905260608201859052608082015260a0810182905260c08101919091527ffa136ae724a018470beba9749c1fdfb83177d6bd6aaaab35d6dbfde739e509109060e00160405180910390a150505050565b60608160000361311057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561313a5780613124816140e1565b91506131339050600a83614070565b9150613114565b60008167ffffffffffffffff81111561315557613155613af1565b6040519080825280601f01601f19166020018201604052801561317f576020820181803683370190505b509050815b851561322457613195600182613ee6565b905060006131a4600a88614070565b6131af90600a613f6d565b6131b99088613ee6565b6131c49060306140fb565b905060008160f81b9050808484815181106131e1576131e1614120565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061321b600a89614070565b97505050613184565b50949350505050565b600085511161327e5760405162461bcd60e51b815260206004820152600a60248201527f656d7074792064617461000000000000000000000000000000000000000000006044820152606401610743565b6000888152600a602090815260408083208a84529091529020600201546132e75760405162461bcd60e51b815260206004820152601c60248201527f626174636820656c656d656e7420646f6573206e6f74206578697374000000006044820152606401610743565b6000888152600a602090815260408083208a845290915290205465010000000000900462ffffff166133815760405162461bcd60e51b815260206004820152603060248201527f626174636820746f74616c20656c656d656e7420746f20617070656e6420736860448201527f6f756c64206e6f74206265207a65726f000000000000000000000000000000006064820152608401610743565b6000888152600c6020908152604080832089845290915290206003015415613564576000888152600c6020908152604080832089845290915290206005015460ff16156134105760405162461bcd60e51b815260206004820152601060248201527f74782064617461207665726966696564000000000000000000000000000000006044820152606401610743565b6000888152600c602090815260408083208984529091529020546001600160a01b0316331461353e576000888152600c6020908152604080832089845290915290206003015442906134659061070890613f8c565b116134b25760405162461bcd60e51b815260206004820152600d60248201527f696e207375626d697474696e67000000000000000000000000000000000000006044820152606401610743565b6000888152600c60209081526040808320898452909152902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016331781556001810187905560028101889055426003820155600401613514868261419e565b506000888152600c602090815260408083208984529091529020600501805460ff19169055613624565b6000888152600c602090815260408083208984529091529020600401613514868261419e565b6040805160c08101825233815260208082018981528284018b81524260608501908152608085018b8152600060a087018190528f8152600c86528781208e825290955295909320845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178155915160018301555160028201559051600382015591519091906004820190613607908261419e565b5060a091909101516005909101805460ff19169115159190911790555b80156136fe576000868660405160200161363f9291906140bb565b60408051601f19818403018152918152815160209283012060008c8152600a84528281208c8252909352908220600301549092506136809083888789613708565b90506001811515146136d45760405162461bcd60e51b815260206004820152601560248201527f7478206461746120766572696679206661696c656400000000000000000000006044820152606401610743565b50506000888152600c602090815260408083208984529091529020600501805460ff191660011790555b5050505050505050565b600080821161377f5760405162461bcd60e51b815260206004820152603760248201527f4c69625f4d65726b6c65547265653a20546f74616c206c6561766573206d757360448201527f742062652067726561746572207468616e207a65726f2e0000000000000000006064820152608401610743565b8184106137f35760405162461bcd60e51b8152602060048201526024808201527f4c69625f4d65726b6c65547265653a20496e646578206f7574206f6620626f7560448201527f6e64732e000000000000000000000000000000000000000000000000000000006064820152608401610743565b6137fc82613975565b8351146138975760405162461bcd60e51b815260206004820152604d60248201527f4c69625f4d65726b6c65547265653a20546f74616c207369626c696e6773206460448201527f6f6573206e6f7420636f72726563746c7920636f72726573706f6e6420746f2060648201527f746f74616c206c65617665732e00000000000000000000000000000000000000608482015260a401610743565b8460005b84518110156139685785600116600103613901578481815181106138c1576138c1614120565b6020026020010151826040516020016138e4929190918252602082015260400190565b60405160208183030381529060405280519060200120915061394f565b8185828151811061391457613914614120565b6020026020010151604051602001613936929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b60019590951c9480613960816140e1565b91505061389b565b5090951495945050505050565b60008082116139ec5760405162461bcd60e51b815260206004820152603060248201527f4c69625f4d65726b6c65547265653a2043616e6e6f7420636f6d70757465206360448201527f65696c286c6f675f3229206f6620302e000000000000000000000000000000006064820152608401610743565b816001036139fc57506000919050565b81600060805b60018110613a3a5780613a18600180831b613ee6565b901b831615613a3257613a2b8183613f8c565b92811c9291505b60011c613a02565b506001811b84146112cc57613a50600182613f8c565b949350505050565b80358015158114613a6857600080fd5b919050565b60008060008060808587031215613a8357600080fd5b843593506020850135925060408501359150613aa160608601613a58565b905092959194509250565b600080600060608486031215613ac157600080fd5b505081359360208301359350604090920135919050565b600060208284031215613aea57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b4957613b49613af1565b604052919050565b600067ffffffffffffffff831115613b6b57613b6b613af1565b613b7e6020601f19601f86011601613b20565b9050828152838383011115613b9257600080fd5b828260208301376000602084830101529392505050565b600060208284031215613bbb57600080fd5b813567ffffffffffffffff811115613bd257600080fd5b8201601f81018413613be357600080fd5b613a5084823560208401613b51565b60005b83811015613c0d578181015183820152602001613bf5565b83811115613c1c576000848401525b50505050565b60008151808452613c3a816020860160208601613bf2565b601f01601f19169290920160200192915050565b604081526000613c616040830185613c22565b905082151560208301529392505050565b6020815260006112cc6020830184613c22565b6001600160a01b0381168114613c9a57600080fd5b50565b600060208284031215613caf57600080fd5b81356112cc81613c85565b60008060408385031215613ccd57600080fd5b50508035926020909101359150565b600082601f830112613ced57600080fd5b6112cc83833560208501613b51565b600080600080600080600060e0888a031215613d1757600080fd5b87359650602080890135965060408901359550606089013567ffffffffffffffff80821115613d4557600080fd5b613d518c838d01613cdc565b965060808b0135955060a08b0135945060c08b0135915080821115613d7557600080fd5b818b0191508b601f830112613d8957600080fd5b813581811115613d9b57613d9b613af1565b8060051b9150613dac848301613b20565b818152918301840191848101908e841115613dc657600080fd5b938501935b83851015613de457843582529385019390850190613dcb565b80965050505050505092959891949750929550565b60008060408385031215613e0c57600080fd5b8235613e1781613c85565b9150613e2560208401613a58565b90509250929050565b60008060008060808587031215613e4457600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff811115613e7057600080fd5b613e7c87828801613cdc565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613ef857613ef8613eb7565b500390565b600060208284031215613f0f57600080fd5b81516112cc81613c85565b600181811c90821680613f2e57607f821691505b602082108103613f67577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000816000190483118215151615613f8757613f87613eb7565b500290565b60008219821115613f9f57613f9f613eb7565b500190565b60008251613fb6818460208701613bf2565b7f5f4d564d5f53657175656e6365725f5772617070657200000000000000000000920191825250601601919050565b600064ffffffffff80831681851680830382111561400557614005613eb7565b01949350505050565b60006020828403121561402057600080fd5b5051919050565b600062ffffff8083168185168183048111821515161561404957614049613eb7565b02949350505050565b600062ffffff80831681851680830382111561400557614005613eb7565b6000826140a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183823760009101908152919050565b828152600082516140d3816020850160208701613bf2565b919091016020019392505050565b600060001982036140f4576140f4613eb7565b5060010190565b600060ff821660ff84168060ff0382111561411857614118613eb7565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561419957600081815260208120601f850160051c810160208610156141765750805b601f850160051c820191505b8181101561419557828155600101614182565b5050505b505050565b815167ffffffffffffffff8111156141b8576141b8613af1565b6141cc816141c68454613f1a565b8461414f565b602080601f83116001811461420157600084156141e95750858301515b600019600386901b1c1916600185901b178555614195565b600085815260208120601f198616915b8281101561423057888601518255948401946001909101908401614211565b508582101561424e5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220399360f05caf5c4f912caca9248d7b53f4a27046bd52e312904f590e8d6a7f5364736f6c634300080f0033",
  "deployedBytecode": "0x6080604052600436106102335760003560e01c80637600fa1211610138578063a6a56da5116100b0578063d6a97a341161007f578063f137391611610064578063f137391614610629578063f1e7746114610649578063f6f24f671461066957600080fd5b8063d6a97a34146105ff578063dcd836161461061457600080fd5b8063a6a56da51461058c578063a8cda37b1461059f578063b357ab92146105b4578063d5fb60d9146105ca57600080fd5b806386e4206e116101075780639447fe88116100ec5780639447fe88146105265780639b19251a1461053c578063a5f5e7191461056c57600080fd5b806386e4206e146104e65780638d14e1271461050657600080fd5b80637600fa12146104705780637f9c97771461049057806381147877146104b057806383cbbb6d146104c657600080fd5b80633ac19597116101cb5780634e74b1551161019a57806361f4edea1161017f57806361f4edea146103cc578063669fdeb5146103fa5780636f9170f61461044057600080fd5b80634e74b155146103a25780635e7ce13a146103b757600080fd5b80633ac1959714610337578063461a44781461035757806348406b861461037757806348f241651461038d57600080fd5b8063279f9b1111610207578063279f9b11146102a9578063299ca478146102c957806335005ffb1461030157806338897fdd1461032157600080fd5b806213c63d1461023857806302adf2d61461025c578063167c705014610271578063172e218d14610287575b600080fd5b34801561024457600080fd5b506002545b6040519081526020015b60405180910390f35b34801561026857600080fd5b50600454610249565b34801561027d57600080fd5b5061024960045481565b34801561029357600080fd5b506102a76102a2366004613a6d565b61067f565b005b3480156102b557600080fd5b506102a76102c4366004613aac565b6108c5565b3480156102d557600080fd5b506000546102e9906001600160a01b031681565b6040516001600160a01b039091168152602001610253565b34801561030d57600080fd5b506102a761031c366004613ad8565b610d42565b34801561032d57600080fd5b5061024960015481565b34801561034357600080fd5b506102a7610352366004613ad8565b610eb0565b34801561036357600080fd5b506102e9610372366004613ba9565b610f7d565b34801561038357600080fd5b5061024960065481565b34801561039957600080fd5b50600654610249565b3480156103ae57600080fd5b50600354610249565b3480156103c357600080fd5b50600554610249565b3480156103d857600080fd5b506103ec6103e7366004613aac565b61100e565b604051610253929190613c4e565b34801561040657600080fd5b506104336040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b81525081565b6040516102539190613c72565b34801561044c57600080fd5b5061046061045b366004613c9d565b6111aa565b6040519015158152602001610253565b34801561047c57600080fd5b5061024961048b366004613cba565b6111d9565b34801561049c57600080fd5b506102a76104ab366004613ad8565b6112d3565b3480156104bc57600080fd5b5061024960055481565b3480156104d257600080fd5b506102a76104e1366004613cfc565b611441565b3480156104f257600080fd5b506102a7610501366004613ad8565b611971565b34801561051257600080fd5b506102a7610521366004613df9565b611adf565b34801561053257600080fd5b5061024960025481565b34801561054857600080fd5b50610460610557366004613c9d565b60086020526000908152604090205460ff1681565b34801561057857600080fd5b506102a7610587366004613ad8565b611bdc565b6102a761059a366004613aac565b611ca9565b3480156105ab57600080fd5b506102a761231c565b3480156105c057600080fd5b5061024960035481565b3480156105d657600080fd5b506105ea6105e5366004613e2e565b61278e565b60408051928352901515602083015201610253565b34801561060b57600080fd5b50600154610249565b34801561062057600080fd5b506102a76128ba565b34801561063557600080fd5b506102a7610644366004613ad8565b61298e565b34801561065557600080fd5b506102a7610664366004613e2e565b612afc565b34801561067557600080fd5b5061024961070881565b6106ad6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b03161461074c5760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a4015b60405180910390fd5b6000848152600c6020908152604080832085845290915281206003015490036107b75760405162461bcd60e51b815260206004820152601660248201527f7478206461746120646f6573206e6f74206578697374000000000000000000006044820152606401610743565b6000848152600c6020908152604080832085845290915290206002015483146108225760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000848152600c6020908152604080832085845290915290206005015481151560ff9091161515036108965760405162461bcd60e51b815260206004820152601a60248201527f766572696669656420737461747573206e6f74206368616e67650000000000006044820152606401610743565b6000938452600c602090815260408086209386529290529220600501805460ff19169215159290921790915550565b6000838152600b602090815260408083208484529091529020600301546109545760405162461bcd60e51b815260206004820152602660248201527f7468657265206973206e6f207374616b6520666f72207468697320626174636860448201527f20696e64657800000000000000000000000000000000000000000000000000006064820152608401610743565b6000838152600b602090815260408083208484529091529020600501546109bd5760405162461bcd60e51b815260206004820152601460248201527f7374616b6520616d6f756e74206973207a65726f0000000000000000000000006044820152606401610743565b6000838152600b6020908152604080832084845290915281206006015460ff1660038111156109ee576109ee613e88565b14610a3b5760405162461bcd60e51b815260206004820152601b60248201527f7769746864726177616c7320617265206e6f7420616c6c6f77656400000000006044820152606401610743565b6000838152600b602090815260408083208484529091529020546001600160a01b03163314610aac5760405162461bcd60e51b815260206004820152601e60248201527f63616e206e6f74207769746864726177206f746865722773207374616b6500006044820152606401610743565b6000838152600b602090815260408083208484529091529020600401544211610b3d5760405162461bcd60e51b815260206004820152602960248201527f63616e206e6f7420776974686472617720647572696e67207375626d6974207060448201527f726f74656374696f6e00000000000000000000000000000000000000000000006064820152608401610743565b33600090815260096020908152604080832054868452600b8352818420858552909252909120600501541115610bb55760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e74207374616b6500000000000000000000000000006044820152606401610743565b6000838152600b60209081526040808320848452909152902060050154471015610c215760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b6000838152600b60209081526040808320848452825280832060068101805460ff191660031790556005015433845260099092528220805491929091610c68908490613ee6565b90915550506000838152600b602090815260408083208484529091528082206005015490513391908381818185875af1925050503d8060008114610cc8576040519150601f19603f3d011682016040523d82523d6000602084013e610ccd565b606091505b5050905080610d1e5760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b506000928352600b6020908152604080852092855291905282206005019190915550565b610d706040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614610e0a5760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b60008111610e5a5760405162461bcd60e51b815260206004820152601660248201527f736c6963652073697a652073686f756c642067742030000000000000000000006044820152606401610743565b6001548103610eab5760405162461bcd60e51b815260206004820152601a60248201527f736c6963652073697a6520686173206e6f74206368616e6765640000000000006044820152606401610743565b600155565b610ede6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614610f785760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b600655565b600080546040517fbf40fac10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf40fac190610fc7908590600401613c72565b602060405180830381865afa158015610fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110089190613efd565b92915050565b6000838152600c6020908152604080832084845290915281206003015460609190810361107d5760405162461bcd60e51b815260206004820152601660248201527f7478206461746120646f6573206e6f74206578697374000000000000000000006044820152606401610743565b6000858152600c6020908152604080832086845290915290206002015484146110e85760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000858152600c602090815260408083208684529091529020600581015460049091018054909160ff1690829061111e90613f1a565b80601f016020809104026020016040519081016040528092919081815260200182805461114a90613f1a565b80156111975780601f1061116c57610100808354040283529160200191611197565b820191906000526020600020905b81548152906001019060200180831161117a57829003601f168201915b5050505050915091509150935093915050565b60075460009060ff1615806110085750506001600160a01b031660009081526008602052604090205460ff1690565b6000806003541161122c5760405162461bcd60e51b815260206004820152601e60248201527f7374616b65206261736520636f7374206e6f7420636f6e6669672079657400006044820152606401610743565b6000838152600a602090815260408083208584529091529020600201546112955760405162461bcd60e51b815260206004820152601c60248201527f626174636820656c656d656e7420646f6573206e6f74206578697374000000006044820152606401610743565b6006546000848152600a602090815260408083208684529091529020600101546112bf9190613f6d565b6003546112cc9190613f8c565b9392505050565b6113016040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b03161461139b5760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b600081116113eb5760405162461bcd60e51b815260206004820152601760248201527f736c69636520636f756e742073686f756c6420677420300000000000000000006044820152606401610743565b600454810361143c5760405162461bcd60e51b815260206004820152601b60248201527f736c69636520636f756e7420686173206e6f74206368616e67656400000000006044820152606401610743565b600455565b61147161144d886130cd565b60405160200161145d9190613fa4565b604051602081830303815290604052610f7d565b6001600160a01b0316336001600160a01b0316146114f75760405162461bcd60e51b815260206004820152602d60248201527f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279207460448201527f68652053657175656e6365722e000000000000000000000000000000000000006064820152608401610743565b6000878152600b602090815260408083208884529091529020600301546115865760405162461bcd60e51b815260206004820152602760248201527f7468657265206973206e6f207374616b6520666f72207468697320626c6f636b60448201527f206e756d626572000000000000000000000000000000000000000000000000006064820152608401610743565b6000878152600b6020908152604080832088845290915290206002015486146115f15760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000878152600b6020908152604080832088845290915281206006015460ff16600381111561162257611622613e88565b1461166f5760405162461bcd60e51b815260206004820152601560248201527f6e6f7420616c6c6f77656420746f207375626d697400000000000000000000006044820152606401610743565b61168087878787878787600161322d565b6000878152600b6020908152604080832088845290915281206006015460ff1660038111156116b1576116b1613e88565b036118f3576000878152600b6020908152604080832088845280835281842080546001600160a01b0316855260098452918420549389905290915260050154111561173e5760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e74207374616b6500000000000000000000000000006044820152606401610743565b6000878152600b602090815260408083208884529091529020600501544710156117aa5760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b6000878152600b60209081526040808320888452909152902060068101805460ff1916600117905560050154156118f3576000878152600b602090815260408083208884528252808320600581015490546001600160a01b031684526009909252822080549192909161181e908490613ee6565b90915550506000878152600b602090815260408083208884529091528082206005015490513391908381818185875af1925050503d806000811461187e576040519150601f19603f3d011682016040523d82523d6000602084013e611883565b606091505b50509050806118d45760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b506000878152600b602090815260408083208884529091528120600501555b6000878152600b602090815260408083208884528252918290206005015482513381529182018a9052818301899052606082018890526080820152600160a0820181905260c082015290517ffa136ae724a018470beba9749c1fdfb83177d6bd6aaaab35d6dbfde739e509109181900360e00190a150505050505050565b61199f6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614611a395760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b60008111611a895760405162461bcd60e51b815260206004820152601660248201527f62617463682073697a652073686f756c642067742030000000000000000000006044820152606401610743565b6005548103611ada5760405162461bcd60e51b815260206004820152601a60248201527f62617463682073697a6520686173206e6f74206368616e6765640000000000006044820152606401610743565b600555565b611b0d6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614611ba75760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b6001600160a01b039091166000908152600860205260409020805491151560ff19928316179055600780549091166001179055565b611c0a6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614611ca45760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b600355565b611cb2336111aa565b611d245760405162461bcd60e51b815260206004820152602360248201527f6f6e6c792077686974656c6973746564207665726966696572732063616e206360448201527f616c6c00000000000000000000000000000000000000000000000000000000006064820152608401610743565b346000611d3185856111d9565b9050600060035411611d855760405162461bcd60e51b815260206004820152601e60248201527f7374616b65206261736520636f7374206e6f7420636f6e6669672079657400006044820152606401610743565b818114611dd45760405162461bcd60e51b815260206004820152601460248201527f7374616b6520636f737420696e636f72726563740000000000000000000000006044820152606401610743565b600060025411611e4c5760405162461bcd60e51b815260206004820152602760248201527f73657175656e636572207375626d6974207365636f6e6473206e6f7420636f6e60448201527f66696720796574000000000000000000000000000000000000000000000000006064820152608401610743565b6000858152600a60209081526040808320878452909152902060020154611eb55760405162461bcd60e51b815260206004820152601c60248201527f626174636820656c656d656e7420646f6573206e6f74206578697374000000006044820152606401610743565b6000858152600a602090815260408083208784529091529020548390611ef19064ffffffffff81169065010000000000900462ffffff16613fe5565b64ffffffffff1610158015611f2557506000858152600a6020908152604080832087845290915290205464ffffffffff1683115b611f975760405162461bcd60e51b815260206004820152602160248201527f626c6f636b206e756d626572206973206e6f7420696e2074686973206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610743565b6000858152600b602090815260408083208684529091529020600301541561205f5760036000868152600b6020908152604080832087845290915290206006015460ff166003811115611fec57611fec613e88565b1461205f5760405162461bcd60e51b815260206004820152602560248201527f74686572652069732061207374616b6520666f7220746869732062617463682060448201527f696e6465780000000000000000000000000000000000000000000000000000006064820152608401610743565b600061209f6040518060400160405280601481526020017f5374617465436f6d6d69746d656e74436861696e000000000000000000000000815250610f7d565b905042816001600160a01b031663c17b291b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612104919061400e565b6000888152600a602090815260408083208a845290915290206004015461212b9190613f8c565b1161219e5760405162461bcd60e51b815260206004820152602e60248201527f746865206261746368206973206f757473696465206f6620746865206672617560448201527f642070726f6f662077696e646f770000000000000000000000000000000000006064820152608401610743565b6040518060e00160405280336001600160a01b03168152602001858152602001868152602001428152602001600254426121d89190613f8c565b815260208101859052604001600090526000878152600b60209081526040808320888452825291829020835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781559083015160018083019190915591830151600282015560608301516003808301919091556080840151600483015560a0840151600583015560c084015160068301805493949193909260ff199091169190849081111561229857612298613e88565b02179055505033600090815260096020526040812080548693509091906122c0908490613f8c565b9091555050604080513381526020810188905290810186905260608101859052608081018490527f918b3eda1688b2f6d3e6d173db1ec863e43f4d1c369d647b1912b0df8be5f12f9060a00160405180910390a1505050505050565b60043560243560d81c60293560e890811c90602c35901c600036818061234461144d896130cd565b6001600160a01b0316336001600160a01b0316146123ca5760405162461bcd60e51b815260206004820152602d60248201527f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279207460448201527f68652053657175656e6365722e000000000000000000000000000000000000006064820152608401610743565b60006123d7866010614027565b6123e290602f614052565b62ffffff169050808411156124815760006123fe826007613f8c565b9050600061240d83600b613f8c565b600554843560cc1c9850833560e01c965081359550909150612430600287614070565b111561247e5760405162461bcd60e51b815260206004820152601c60248201527f73697a65206f66207478206461746120697320746f6f206c61726765000000006044820152606401610743565b50505b60006124c16040518060400160405280601981526020017f43616e6f6e6963616c5472616e73616374696f6e436861696e00000000000000815250610f7d565b90506000816001600160a01b031663cfdf677e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125279190613efd565b6040517f576f2588000000000000000000000000000000000000000000000000000000008152600481018d90529091506000906001600160a01b0383169063576f258890602401602060405180830381865afa15801561258b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125af919061400e565b9050600080846001600160a01b03166000366040516125cf9291906140ab565b6000604051808303816000865af19150503d806000811461260c576040519150601f19603f3d011682016040523d82523d6000602084013e612611565b606091505b50909250905081151560000361262e576040513d806000833e8082fd5b50506040518060c001604052808c64ffffffffff1681526020018b62ffffff16815260200187815260200189815260200186815260200142815250600a60008e8152602001908152602001600020600083815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548162ffffff021916908362ffffff16021790555060408201518160010155606082015181600201556080820151816003015560a082015181600401559050507f77e48e0d46be115d5fe8dd03f4dbf8eb309c5fdc8ffdcbe6f8eaa5bd6c65aed98c828d8d8a8d8b6040516127789796959493929190968752602087019590955264ffffffffff93909316604086015262ffffff919091166060850152608084015260a083015260c082015260e00190565b60405180910390a1505050505050505050505050565b6000848152600c60209081526040808320858452909152812060030154819081036127fb5760405162461bcd60e51b815260206004820152601660248201527f7478206461746120646f6573206e6f74206578697374000000000000000000006044820152606401610743565b6000868152600c6020908152604080832087845290915290206002015485146128665760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b83836040516020016128799291906140bb565b60408051601f1981840301815291815281516020928301206000898152600c845282812088825290935291206005015490925060ff16905094509492505050565b6128e86040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b0316146129825760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b6007805460ff19169055565b6129bc6040518060400160405280600d81526020016c26a2aa24a9afa6a0a720a3a2a960991b815250610f7d565b6001600160a01b0316336001600160a01b031614612a565760405162461bcd60e51b815260206004820152604b60248201527f4d564d5f43616e6f6e6963616c5472616e73616374696f6e3a2046756e63746960448201527f6f6e2063616e206f6e6c792062652063616c6c656420627920746865204d455460648201526a24a9afa6a0a720a3a2a91760a91b608482015260a401610743565b60008111612aa65760405162461bcd60e51b815260206004820152601360248201527f7365636f6e64732073686f756c642067742030000000000000000000000000006044820152606401610743565b6002548103612af75760405162461bcd60e51b815260206004820152601760248201527f7365636f6e647320686173206e6f74206368616e6765640000000000000000006044820152606401610743565b600255565b612b0861144d856130cd565b6001600160a01b03163303612b855760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e2063616e206e6f742062652063616c6c656420627920746860448201527f652053657175656e6365722e00000000000000000000000000000000000000006064820152608401610743565b6000848152600b60209081526040808320858452909152902060030154612c145760405162461bcd60e51b815260206004820152602760248201527f7468657265206973206e6f207374616b6520666f72207468697320626c6f636b60448201527f206e756d626572000000000000000000000000000000000000000000000000006064820152608401610743565b6000848152600b602090815260408083208584529091529020600201548314612c7f5760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610743565b6000848152600b602090815260408083208584529091529020600401544211612d105760405162461bcd60e51b815260206004820152603160248201527f63616e206e6f74207375626d697420647572696e672073657175656e6365722060448201527f7375626d69742070726f74656374696f6e0000000000000000000000000000006064820152608401610743565b6000848152600b602090815260408083208584529091529020546001600160a01b03163314612dd7576002546000858152600b602090815260408083208684529091529020600401544291612d6491613f8c565b10612dd75760405162461bcd60e51b815260206004820152602e60248201527f63616e206e6f74207375626d697420647572696e67207374616b65722073756260448201527f6d69742070726f74656374696f6e0000000000000000000000000000000000006064820152608401610743565b612e138484848460008080604051908082528060200260200182016040528015612e0b578160200160208202803683370190505b50600061322d565b6000848152600b6020908152604080832085845290915281206006015460ff166003811115612e4457612e44613e88565b03613051576000848152600b6020908152604080832085845280835281842060068101805460ff1916600217905580546001600160a01b03168086526009855292852054948790529252600590910154909110801590612ebf57506000858152600b6020908152604080832086845290915290206005015415155b1561304f576000858152600b60209081526040808320868452909152902060050154471015612f305760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b6000858152600b602090815260408083208684528252808320600501546001600160a01b038516845260099092528220805491929091612f71908490613ee6565b90915550506000858152600b602090815260408083208684529091528082206005015490516001600160a01b03841691908381818185875af1925050503d8060008114612fda576040519150601f19603f3d011682016040523d82523d6000602084013e612fdf565b606091505b50509050806130305760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610743565b506000858152600b602090815260408083208684529091528120600501555b505b6000848152600b60209081526040808320858452825280832060050154815133815292830188905290820186905260608201859052608082015260a0810182905260c08101919091527ffa136ae724a018470beba9749c1fdfb83177d6bd6aaaab35d6dbfde739e509109060e00160405180910390a150505050565b60608160000361311057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561313a5780613124816140e1565b91506131339050600a83614070565b9150613114565b60008167ffffffffffffffff81111561315557613155613af1565b6040519080825280601f01601f19166020018201604052801561317f576020820181803683370190505b509050815b851561322457613195600182613ee6565b905060006131a4600a88614070565b6131af90600a613f6d565b6131b99088613ee6565b6131c49060306140fb565b905060008160f81b9050808484815181106131e1576131e1614120565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061321b600a89614070565b97505050613184565b50949350505050565b600085511161327e5760405162461bcd60e51b815260206004820152600a60248201527f656d7074792064617461000000000000000000000000000000000000000000006044820152606401610743565b6000888152600a602090815260408083208a84529091529020600201546132e75760405162461bcd60e51b815260206004820152601c60248201527f626174636820656c656d656e7420646f6573206e6f74206578697374000000006044820152606401610743565b6000888152600a602090815260408083208a845290915290205465010000000000900462ffffff166133815760405162461bcd60e51b815260206004820152603060248201527f626174636820746f74616c20656c656d656e7420746f20617070656e6420736860448201527f6f756c64206e6f74206265207a65726f000000000000000000000000000000006064820152608401610743565b6000888152600c6020908152604080832089845290915290206003015415613564576000888152600c6020908152604080832089845290915290206005015460ff16156134105760405162461bcd60e51b815260206004820152601060248201527f74782064617461207665726966696564000000000000000000000000000000006044820152606401610743565b6000888152600c602090815260408083208984529091529020546001600160a01b0316331461353e576000888152600c6020908152604080832089845290915290206003015442906134659061070890613f8c565b116134b25760405162461bcd60e51b815260206004820152600d60248201527f696e207375626d697474696e67000000000000000000000000000000000000006044820152606401610743565b6000888152600c60209081526040808320898452909152902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016331781556001810187905560028101889055426003820155600401613514868261419e565b506000888152600c602090815260408083208984529091529020600501805460ff19169055613624565b6000888152600c602090815260408083208984529091529020600401613514868261419e565b6040805160c08101825233815260208082018981528284018b81524260608501908152608085018b8152600060a087018190528f8152600c86528781208e825290955295909320845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178155915160018301555160028201559051600382015591519091906004820190613607908261419e565b5060a091909101516005909101805460ff19169115159190911790555b80156136fe576000868660405160200161363f9291906140bb565b60408051601f19818403018152918152815160209283012060008c8152600a84528281208c8252909352908220600301549092506136809083888789613708565b90506001811515146136d45760405162461bcd60e51b815260206004820152601560248201527f7478206461746120766572696679206661696c656400000000000000000000006044820152606401610743565b50506000888152600c602090815260408083208984529091529020600501805460ff191660011790555b5050505050505050565b600080821161377f5760405162461bcd60e51b815260206004820152603760248201527f4c69625f4d65726b6c65547265653a20546f74616c206c6561766573206d757360448201527f742062652067726561746572207468616e207a65726f2e0000000000000000006064820152608401610743565b8184106137f35760405162461bcd60e51b8152602060048201526024808201527f4c69625f4d65726b6c65547265653a20496e646578206f7574206f6620626f7560448201527f6e64732e000000000000000000000000000000000000000000000000000000006064820152608401610743565b6137fc82613975565b8351146138975760405162461bcd60e51b815260206004820152604d60248201527f4c69625f4d65726b6c65547265653a20546f74616c207369626c696e6773206460448201527f6f6573206e6f7420636f72726563746c7920636f72726573706f6e6420746f2060648201527f746f74616c206c65617665732e00000000000000000000000000000000000000608482015260a401610743565b8460005b84518110156139685785600116600103613901578481815181106138c1576138c1614120565b6020026020010151826040516020016138e4929190918252602082015260400190565b60405160208183030381529060405280519060200120915061394f565b8185828151811061391457613914614120565b6020026020010151604051602001613936929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b60019590951c9480613960816140e1565b91505061389b565b5090951495945050505050565b60008082116139ec5760405162461bcd60e51b815260206004820152603060248201527f4c69625f4d65726b6c65547265653a2043616e6e6f7420636f6d70757465206360448201527f65696c286c6f675f3229206f6620302e000000000000000000000000000000006064820152608401610743565b816001036139fc57506000919050565b81600060805b60018110613a3a5780613a18600180831b613ee6565b901b831615613a3257613a2b8183613f8c565b92811c9291505b60011c613a02565b506001811b84146112cc57613a50600182613f8c565b949350505050565b80358015158114613a6857600080fd5b919050565b60008060008060808587031215613a8357600080fd5b843593506020850135925060408501359150613aa160608601613a58565b905092959194509250565b600080600060608486031215613ac157600080fd5b505081359360208301359350604090920135919050565b600060208284031215613aea57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b4957613b49613af1565b604052919050565b600067ffffffffffffffff831115613b6b57613b6b613af1565b613b7e6020601f19601f86011601613b20565b9050828152838383011115613b9257600080fd5b828260208301376000602084830101529392505050565b600060208284031215613bbb57600080fd5b813567ffffffffffffffff811115613bd257600080fd5b8201601f81018413613be357600080fd5b613a5084823560208401613b51565b60005b83811015613c0d578181015183820152602001613bf5565b83811115613c1c576000848401525b50505050565b60008151808452613c3a816020860160208601613bf2565b601f01601f19169290920160200192915050565b604081526000613c616040830185613c22565b905082151560208301529392505050565b6020815260006112cc6020830184613c22565b6001600160a01b0381168114613c9a57600080fd5b50565b600060208284031215613caf57600080fd5b81356112cc81613c85565b60008060408385031215613ccd57600080fd5b50508035926020909101359150565b600082601f830112613ced57600080fd5b6112cc83833560208501613b51565b600080600080600080600060e0888a031215613d1757600080fd5b87359650602080890135965060408901359550606089013567ffffffffffffffff80821115613d4557600080fd5b613d518c838d01613cdc565b965060808b0135955060a08b0135945060c08b0135915080821115613d7557600080fd5b818b0191508b601f830112613d8957600080fd5b813581811115613d9b57613d9b613af1565b8060051b9150613dac848301613b20565b818152918301840191848101908e841115613dc657600080fd5b938501935b83851015613de457843582529385019390850190613dcb565b80965050505050505092959891949750929550565b60008060408385031215613e0c57600080fd5b8235613e1781613c85565b9150613e2560208401613a58565b90509250929050565b60008060008060808587031215613e4457600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff811115613e7057600080fd5b613e7c87828801613cdc565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613ef857613ef8613eb7565b500390565b600060208284031215613f0f57600080fd5b81516112cc81613c85565b600181811c90821680613f2e57607f821691505b602082108103613f67577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000816000190483118215151615613f8757613f87613eb7565b500290565b60008219821115613f9f57613f9f613eb7565b500190565b60008251613fb6818460208701613bf2565b7f5f4d564d5f53657175656e6365725f5772617070657200000000000000000000920191825250601601919050565b600064ffffffffff80831681851680830382111561400557614005613eb7565b01949350505050565b60006020828403121561402057600080fd5b5051919050565b600062ffffff8083168185168183048111821515161561404957614049613eb7565b02949350505050565b600062ffffff80831681851680830382111561400557614005613eb7565b6000826140a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183823760009101908152919050565b828152600082516140d3816020850160208701613bf2565b919091016020019392505050565b600060001982036140f4576140f4613eb7565b5060010190565b600060ff821660ff84168060ff0382111561411857614118613eb7565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561419957600081815260208120601f850160051c810160208610156141765750805b601f850160051c820191505b8181101561419557828155600101614182565b5050505b505050565b815167ffffffffffffffff8111156141b8576141b8613af1565b6141cc816141c68454613f1a565b8461414f565b602080601f83116001811461420157600084156141e95750858301515b600019600386901b1c1916600185901b178555614195565b600085815260208120601f198616915b8281101561423057888601518255948401946001909101908401614211565b508582101561424e5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220399360f05caf5c4f912caca9248d7b53f4a27046bd52e312904f590e8d6a7f5364736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
