{
    "_format": "hh-sol-artifact-1",
    "contractName": "Market",
    "sourceName": "contracts/Market.sol",
    "abi": [
      {
        "inputs": [],
        "stateMutability": "nonpayable",
        "type": "constructor"
      },
      {
        "inputs": [],
        "name": "InsufficientOpeningValue",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidAdjustmentAmount",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidSender",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidTokenId",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "NativeTokenIncorrectAmount",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "NativeTokenTransferFailed",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "OnlyAccountant",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "PositionEditDurationLimit",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "PositionIsLiquidated",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "UnsupportedCurrency",
        "type": "error"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "address",
            "name": "previousAdmin",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "address",
            "name": "newAdmin",
            "type": "address"
          }
        ],
        "name": "AdminChanged",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "beacon",
            "type": "address"
          }
        ],
        "name": "BeaconUpgraded",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "uint8",
            "name": "version",
            "type": "uint8"
          }
        ],
        "name": "Initialized",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "address",
            "name": "valueProvider",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "address",
            "name": "accountantAddress",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "string",
            "name": "metadataURI",
            "type": "string"
          }
        ],
        "name": "MarketInitialized",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "string",
            "name": "newMetadataURI",
            "type": "string"
          }
        ],
        "name": "MetadataURIUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "previousOwner",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newOwner",
            "type": "address"
          }
        ],
        "name": "OwnershipTransferred",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "enum Direction",
            "name": "direction",
            "type": "uint8"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "closingUsdValue",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "closingSpotPrice",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "bool",
            "name": "isLiquidated",
            "type": "bool"
          }
        ],
        "name": "PositionClosed",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "enum Direction",
            "name": "direction",
            "type": "uint8"
          },
          {
            "indexed": false,
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "openingTokenAmount",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "openingUsdValue",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "openingSpotPrice",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "multiplier",
            "type": "uint256"
          }
        ],
        "name": "PositionOpened",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "int256",
            "name": "adjustmentAmountUsd",
            "type": "int256"
          }
        ],
        "name": "PositionUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "implementation",
            "type": "address"
          }
        ],
        "name": "Upgraded",
        "type": "event"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "_currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "_recipient",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "_value",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "_fee",
            "type": "uint256"
          }
        ],
        "name": "_handlePayout",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "accountant",
        "outputs": [
          {
            "internalType": "contract Accountant",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "from",
            "type": "address"
          },
          {
            "internalType": "uint256[]",
            "name": "positionIds",
            "type": "uint256[]"
          }
        ],
        "name": "batchClosePositions",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "calculatePositionValues",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "longsValue",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "shortsValue",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "transferAmount",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "_tokenId",
            "type": "uint256"
          }
        ],
        "name": "closePosition",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "commitValueTransfer",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "feeDividend",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "enum Direction",
            "name": "_direction",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "_tokenAddress",
            "type": "address"
          }
        ],
        "name": "getCurrencyPoolUSDValue",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "enum Direction",
            "name": "_direction",
            "type": "uint8"
          }
        ],
        "name": "getDirectionUSDValue",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getIndexValue",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "enum Direction",
            "name": "_direction",
            "type": "uint8"
          }
        ],
        "name": "getLastLiquidationTimestamp",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "_tokenId",
            "type": "uint256"
          }
        ],
        "name": "getPositionValue",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "_tokenId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "_amount",
            "type": "uint256"
          }
        ],
        "name": "increasePosition",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract IValueProvider",
            "name": "_valueProvider",
            "type": "address"
          },
          {
            "internalType": "contract IMimicry",
            "name": "_mimicryAddress",
            "type": "address"
          },
          {
            "internalType": "contract Accountant",
            "name": "_accountantAddress",
            "type": "address"
          },
          {
            "internalType": "contract IERC721Upgradeable",
            "name": "_positionToken",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "_name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "_metadataURI",
            "type": "string"
          }
        ],
        "name": "initialize",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "_tokenId",
            "type": "uint256"
          }
        ],
        "name": "isPositionEditable",
        "outputs": [
          {
            "internalType": "bool",
            "name": "",
            "type": "bool"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "_tokenId",
            "type": "uint256"
          }
        ],
        "name": "isPositionLiquidated",
        "outputs": [
          {
            "internalType": "bool",
            "name": "",
            "type": "bool"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "metadataURI",
        "outputs": [
          {
            "internalType": "string",
            "name": "",
            "type": "string"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "mimicry",
        "outputs": [
          {
            "internalType": "contract IMimicry",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "minPositionEditDuration",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "name",
        "outputs": [
          {
            "internalType": "string",
            "name": "",
            "type": "string"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "enum Direction",
            "name": "_direction",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "_tokenAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "_openingValue",
            "type": "uint256"
          }
        ],
        "name": "openPosition",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "owner",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "positionToken",
        "outputs": [
          {
            "internalType": "contract IERC721Upgradeable",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "name": "positionsMap",
        "outputs": [
          {
            "internalType": "enum Direction",
            "name": "direction",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "multiplier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "createdAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "editedAt",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "proxiableUUID",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "",
            "type": "bytes32"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "renounceOwnership",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "string",
            "name": "_metadataURI",
            "type": "string"
          }
        ],
        "name": "setMetadataURI",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newOwner",
            "type": "address"
          }
        ],
        "name": "transferOwnership",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newImplementation",
            "type": "address"
          }
        ],
        "name": "upgradeTo",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newImplementation",
            "type": "address"
          },
          {
            "internalType": "bytes",
            "name": "data",
            "type": "bytes"
          }
        ],
        "name": "upgradeToAndCall",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "valueProvider",
        "outputs": [
          {
            "internalType": "contract IValueProvider",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      }
    ],
    "bytecode": "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200004457600080fd5b50620000556200005b60201b60201c565b62000206565b600060019054906101000a900460ff1615620000ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a590620001a9565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620001205760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620001179190620001e9565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200019160278362000122565b91506200019e8262000133565b604082019050919050565b60006020820190508181036000830152620001c48162000182565b9050919050565b600060ff82169050919050565b620001e381620001cb565b82525050565b6000602082019050620002006000830184620001d8565b92915050565b6080516157a56200023e60003960008181610a9b01528181610b2a01528181610ccb01528181610d5a0152610f0a01526157a56000f3fe6080604052600436106101d85760003560e01c806371488c9611610102578063a2a1079f11610095578063ef5ae54611610064578063ef5ae54614610678578063f2fde38b146106b5578063f39e321f146106de578063f86d054514610709576101d8565b8063a2a1079f146105aa578063b86a0aaa146105d5578063daecdff614610612578063e253433e1461064f576101d8565b80638d321896116100d15780638d321896146105045780638da5cb5b1461052d5780639317c20014610558578063a126d60114610581576101d8565b806371488c961461045a578063715018a614610497578063750521f5146104ae5780637f78c3be146104d7576101d8565b806344add44b1161017a5780635148bbcb116101495780635148bbcb146103ba57806352d1902d146103f7578063538fe6af146104225780636fe5452c1461043e576101d8565b806344add44b1461031d5780634f1ef286146103485780634fb3ccc5146103645780635037b7e91461038f576101d8565b80630ba6a356116101b65780630ba6a35614610270578063223c41ac14610287578063260cca61146102b25780633659cfe6146102f4576101d8565b806303ee438c146101dd57806306fdde03146102085780630a91881414610233575b600080fd5b3480156101e957600080fd5b506101f2610734565b6040516101ff9190613c72565b60405180910390f35b34801561021457600080fd5b5061021d6107c2565b60405161022a9190613c72565b60405180910390f35b34801561023f57600080fd5b5061025a60048036038101906102559190613cde565b610850565b6040516102679190613d26565b60405180910390f35b34801561027c57600080fd5b50610285610986565b005b34801561029357600080fd5b5061029c610a0a565b6040516102a99190613dc0565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190613cde565b610a30565b6040516102eb96959493929190613e82565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190613f0f565b610a99565b005b34801561032957600080fd5b50610332610c22565b60405161033f9190613f3c565b60405180910390f35b610362600480360381019061035d919061408c565b610cc9565b005b34801561037057600080fd5b50610379610e06565b6040516103869190614109565b60405180910390f35b34801561039b57600080fd5b506103a4610e2c565b6040516103b19190614145565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190614185565b610e52565b6040516103ee9190613f3c565b60405180910390f35b34801561040357600080fd5b5061040c610f06565b60405161041991906141cb565b60405180910390f35b61043c600480360381019061043791906141e6565b610fbf565b005b61045860048036038101906104539190614239565b61172f565b005b34801561046657600080fd5b50610481600480360381019061047c9190614279565b611de6565b60405161048e9190613f3c565b60405180910390f35b3480156104a357600080fd5b506104ac611e9d565b005b3480156104ba57600080fd5b506104d560048036038101906104d09190614319565b611eb1565b005b3480156104e357600080fd5b506104ec611f08565b6040516104fb93929190614366565b60405180910390f35b34801561051057600080fd5b5061052b600480360381019061052691906143f3565b611fb8565b005b34801561053957600080fd5b50610542612089565b60405161054f9190614453565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190614566565b6120b3565b005b34801561058d57600080fd5b506105a860048036038101906105a39190613cde565b612377565b005b3480156105b657600080fd5b506105bf612384565b6040516105cc9190614656565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190613cde565b6123aa565b6040516106099190613f3c565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613cde565b61260d565b6040516106469190613d26565b60405180910390f35b34801561065b57600080fd5b5061067660048036038101906106719190614671565b61263c565b005b34801561068457600080fd5b5061069f600480360381019061069a9190614185565b6128c4565b6040516106ac9190613f3c565b60405180910390f35b3480156106c157600080fd5b506106dc60048036038101906106d79190613f0f565b612978565b005b3480156106ea57600080fd5b506106f36129fc565b6040516107009190613f3c565b60405180910390f35b34801561071557600080fd5b5061071e612a02565b60405161072b9190613f3c565b60405180910390f35b60d1805461074190614707565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90614707565b80156107ba5780601f1061078f576101008083540402835291602001916107ba565b820191906000526020600020905b81548152906001019060200180831161079d57829003601f168201915b505050505081565b60d080546107cf90614707565b80601f01602080910402602001604051908101604052809291908181526020018280546107fb90614707565b80156108485780601f1061081d57610100808354040283529160200191610848565b820191906000526020600020905b81548152906001019060200180831161082b57829003601f168201915b505050505081565b600081600160cd60008381526020019081526020016000206002015410156108a4576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cd60008581526020019081526020016000209050806003015460cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635148bbcb8360000160009054906101000a900460ff166040518263ffffffff1660e01b815260040161092c9190614739565b60206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c9190614769565b1192505050919050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109f057600080fd5b505af1158015610a04573d6000803e3d6000fd5b50505050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60cd6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154905086565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f90614808565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b67612a08565b73ffffffffffffffffffffffffffffffffffffffff1614610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb49061489a565b60405180910390fd5b610bc681612a5f565b610c1f81600067ffffffffffffffff811115610be557610be4613f61565b5b6040519080825280601f01601f191660200182016040528015610c175781602001600182028036833780820191505090505b506000612a6a565b50565b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344add44b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8c57600080fd5b505afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190614769565b905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90614808565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97612a08565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49061489a565b60405180910390fd5b610df682612a5f565b610e0282826001612a6a565b5050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635148bbcb836040518263ffffffff1660e01b8152600401610eaf9190614739565b60206040518083038186803b158015610ec757600080fd5b505afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190614769565b9050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d9061492c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60d260009054906101000a900460ff161561100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100690614998565b60405180910390fd5b600160d260006101000a81548160ff021916908315150217905550611032612be7565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fb92558836040518263ffffffff1660e01b815260040161108d9190614453565b60206040518083038186803b1580156110a557600080fd5b505afa1580156110b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dd91906149e4565b611113576040517f2263f4e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bb8845884846040518363ffffffff1660e01b8152600401611172929190614a11565b60206040518083038186803b15801561118a57600080fd5b505afa15801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c29190614769565b90506305f5e100811015611202576040517fdacd896000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561123e5750348214155b806112825750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112815750600034115b5b156112b9576040517fdd944ae300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461139d5761139c3330848673ffffffffffffffffffffffffffffffffffffffff16612cc9909392919063ffffffff16565b5b60006113a7612d52565b9050600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df4ca65d8787876040518463ffffffff1660e01b815260040161140a93929190614a3a565b602060405180830381600087803b15801561142457600080fd5b505af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c9190614769565b90506040518060c0016040528087600181111561147c5761147b613ddb565b5b81526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020018381526020014281526020014281525060cd600084815260200190815260200160002060008201518160000160006101000a81548160ff021916908360018111156114f1576114f0613ddb565b5b021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201556080820151816003015560a082015181600401559050503373ffffffffffffffffffffffffffffffffffffffff16827ffe48a5a755ff0884e318d222d6178d5a66cdfade75ce40f5c9d8cc43bafeffe488888860ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bb884588c8c6040518363ffffffff1660e01b8152600401611601929190614a11565b60206040518083038186803b15801561161957600080fd5b505afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190614769565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344add44b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190614769565b8860405161170496959493929190613e82565b60405180910390a3505050600060d260006101000a81548160ff021916908315150217905550505050565b813373ffffffffffffffffffffffffffffffffffffffff1660cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016117a29190613f3c565b60206040518083038186803b1580156117ba57600080fd5b505afa1580156117ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f29190614a86565b73ffffffffffffffffffffffffffffffffffffffff161461183f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d260009054906101000a900460ff161561188f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188690614998565b60405180910390fd5b600160d260006101000a81548160ff0219169083151502179055506118b2612be7565b6118bb8361260d565b6118f1576040517f0ad455e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561192c576040517f698669ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cd60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156119a35750348314155b80611a0b5750600073ffffffffffffffffffffffffffffffffffffffff168160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611a0a5750600034115b5b15611a42576040517fdd944ae300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611aac57600080fd5b505af1158015611ac0573d6000803e3d6000fd5b50505050611acd84610850565b15611b04576040517f8b947e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637997ef768360000160009054906101000a900460ff168460000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b8152600401611b9a93929190614a3a565b602060405180830381600087803b158015611bb457600080fd5b505af1158015611bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bec9190614769565b905080826001016000828254611c029190614ae2565b92505081905550428260040181905550600073ffffffffffffffffffffffffffffffffffffffff168260000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbc57611cbb3330868560000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cc9909392919063ffffffff16565b5b847f9d7414472f717282fd60ccd0c0dcb25649a9185c68ca5a73309264fe66d1d69760ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bb884588560000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b8152600401611d5f929190614a11565b60206040518083038186803b158015611d7757600080fd5b505afa158015611d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611daf9190614769565b604051611dbc9190614b51565b60405180910390a25050600060d260006101000a81548160ff021916908315150217905550505050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166371488c9684846040518363ffffffff1660e01b8152600401611e45929190614b6c565b60206040518083038186803b158015611e5d57600080fd5b505afa158015611e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e959190614769565b905092915050565b611ea5612e06565b611eaf6000612e84565b565b611eb9612e06565b818160d19190611eca929190613b36565b507fefafb90526da1636e1335eac0151301742fb755d986954c613b90e891778ba398282604051611efc929190614bc2565b60405180910390a15050565b600080600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f78c3be6040518163ffffffff1660e01b815260040160606040518083038186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fad9190614be6565b925092509250909192565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82829050811015612083576120708484848481811061206457612063614c39565b5b90506020020135612f4a565b808061207b90614c68565b915050612042565b50505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900460ff161590508080156120e45750600160008054906101000a900460ff1660ff16105b8061211157506120f330613418565b1580156121105750600160008054906101000a900460ff1660ff16145b5b612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614d23565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561218d576001600060016101000a81548160ff0219169083151502179055505b61219561343b565b61219d613494565b8860c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508760ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560cc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460d091906122b2929190613b36565b50828260d191906122c4929190613b36565b50611c2060cf81905550601e60ce819055507f9b7f72f0f14a7902f022b31f141744d17e6858e0827096e4b7b944528ca8bd9c8988858560405161230b9493929190614d43565b60405180910390a1801561236c5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516123639190614dcb565b60405180910390a15b505050505050505050565b6123813382612f4a565b50565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600160cd60008381526020019081526020016000206002015410156123fe576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61240783610850565b156124155760009150612607565b600060cd60008581526020019081526020016000209050600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166371488c968360000160009054906101000a900460ff168460000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016124c0929190614b6c565b60206040518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125109190614769565b905061260281836001015460cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663edb89f7e8660000160009054906101000a900460ff168760000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016125ad929190614b6c565b60206040518083038186803b1580156125c557600080fd5b505afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fd9190614769565b6134e5565b935050505b50919050565b600060cf5460cd6000848152602001908152602001600020600401546126339190614ae2565b42119050919050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126c3576040517fbaf4cbdd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156128565760008373ffffffffffffffffffffffffffffffffffffffff168360405161271e90614e17565b60006040518083038185875af1925050503d806000811461275b576040519150601f19603f3d011682016040523d82523d6000602084013e612760565b606091505b505090508061279b576040517f3022f2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008211156128505760006127ae612089565b73ffffffffffffffffffffffffffffffffffffffff16836040516127d190614e17565b60006040518083038185875af1925050503d806000811461280e576040519150601f19603f3d011682016040523d82523d6000602084013e612813565b606091505b505090508061284e576040517f3022f2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b506128be565b61288183838673ffffffffffffffffffffffffffffffffffffffff166135c19092919063ffffffff16565b60008111156128bd576128bc612895612089565b828673ffffffffffffffffffffffffffffffffffffffff166135c19092919063ffffffff16565b5b5b50505050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef5ae546836040518263ffffffff1660e01b81526004016129219190614739565b60206040518083038186803b15801561293957600080fd5b505afa15801561294d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129719190614769565b9050919050565b612980612e06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e790614e9e565b60405180910390fd5b6129f981612e84565b50565b60cf5481565b60ce5481565b6000612a367f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b613647565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612a67612e06565b50565b612a967f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b613651565b60000160009054906101000a900460ff1615612aba57612ab58361365b565b612be2565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b0057600080fd5b505afa925050508015612b3157506040513d601f19601f82011682018060405250810190612b2e9190614eea565b60015b612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6790614f89565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114612bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcc9061501b565b60405180910390fd5b50612be1838383613714565b5b505050565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1ccbd886040518163ffffffff1660e01b815260040160206040518083038186803b158015612c4f57600080fd5b505afa158015612c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8791906149e4565b15612cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbe906150ad565b60405180910390fd5b565b612d4c846323b872dd60e01b858585604051602401612cea939291906150cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613740565b50505050565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c43879d5336040518263ffffffff1660e01b8152600401612daf9190614453565b602060405180830381600087803b158015612dc957600080fd5b505af1158015612ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e019190614769565b905090565b612e0e613807565b73ffffffffffffffffffffffffffffffffffffffff16612e2c612089565b73ffffffffffffffffffffffffffffffffffffffff1614612e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7990615150565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60d260009054906101000a900460ff1615612f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9190614998565b60405180910390fd5b600160d260006101000a81548160ff02191690831515021790555060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1ccbd886040518163ffffffff1660e01b815260040160206040518083038186803b15801561301d57600080fd5b505afa158015613031573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305591906149e4565b15801561306857506130668161260d565b155b1561309f576040517f0ad455e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cd6000838152602001908152602001600020905060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312057600080fd5b505af1158015613134573d6000803e3d6000fd5b5050505060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663067bba6e84846040518363ffffffff1660e01b8152600401613195929190614a11565b600060405180830381600087803b1580156131af57600080fd5b505af11580156131c3573d6000803e3d6000fd5b5050505060006131d2836123aa565b90506131dd83610850565b6132795760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b5cfc46838660ce546127106040518563ffffffff1660e01b815260040161324694939291906152f4565b600060405180830381600087803b15801561326057600080fd5b505af1158015613274573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff16837f0c604c8c6e0078dad58f340a712904ca423c20dcd5e2468836a33322befdf5cd8460000160009054906101000a900460ff168460c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344add44b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561332d57600080fd5b505afa158015613341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133659190614769565b61336e89610850565b60405161337e949392919061533b565b60405180910390a360cd6000848152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160009055600482016000905550505050600060d260006101000a81548160ff0219169083151502179055505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661348a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613481906153f2565b60405180910390fd5b61349261380f565b565b600060019054906101000a900460ff166134e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134da906153f2565b60405180910390fd5b565b6000806000801985870985870292508281108382030391505060008114156135215783828161351757613516615412565b5b04925050506135ba565b80841161352d57600080fd5b60008486880990508281118203915080830392506000600186190186169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b6136428363a9059cbb60e01b84846040516024016135e0929190614a11565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613740565b505050565b6000819050919050565b6000819050919050565b61366481613418565b6136a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369a906154b3565b60405180910390fd5b806136d07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b613647565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61371d83613870565b60008251118061372a5750805b1561373b5761373983836138bf565b505b505050565b60006137a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166139a39092919063ffffffff16565b905060008151111561380257808060200190518101906137c291906149e4565b613801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f890615545565b60405180910390fd5b5b505050565b600033905090565b600060019054906101000a900460ff1661385e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613855906153f2565b60405180910390fd5b61386e613869613807565b612e84565b565b6138798161365b565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606138ca83613418565b613909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613900906155d7565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516139319190615633565b600060405180830381855af49150503d806000811461396c576040519150601f19603f3d011682016040523d82523d6000602084013e613971565b606091505b50915091506139998282604051806060016040528060278152602001615749602791396139bb565b9250505092915050565b60606139b28484600085613a22565b90509392505050565b606083156139cb57829050613a1b565b6000835111156139de5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a129190613c72565b60405180910390fd5b9392505050565b606082471015613a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a5e906156bc565b60405180910390fd5b613a7085613418565b613aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa690615728565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ad89190615633565b60006040518083038185875af1925050503d8060008114613b15576040519150601f19603f3d011682016040523d82523d6000602084013e613b1a565b606091505b5091509150613b2a8282866139bb565b92505050949350505050565b828054613b4290614707565b90600052602060002090601f016020900481019282613b645760008555613bab565b82601f10613b7d57803560ff1916838001178555613bab565b82800160010185558215613bab579182015b82811115613baa578235825591602001919060010190613b8f565b5b509050613bb89190613bbc565b5090565b5b80821115613bd5576000816000905550600101613bbd565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c13578082015181840152602081019050613bf8565b83811115613c22576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c4482613bd9565b613c4e8185613be4565b9350613c5e818560208601613bf5565b613c6781613c28565b840191505092915050565b60006020820190508181036000830152613c8c8184613c39565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613cbb81613ca8565b8114613cc657600080fd5b50565b600081359050613cd881613cb2565b92915050565b600060208284031215613cf457613cf3613c9e565b5b6000613d0284828501613cc9565b91505092915050565b60008115159050919050565b613d2081613d0b565b82525050565b6000602082019050613d3b6000830184613d17565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613d86613d81613d7c84613d41565b613d61565b613d41565b9050919050565b6000613d9882613d6b565b9050919050565b6000613daa82613d8d565b9050919050565b613dba81613d9f565b82525050565b6000602082019050613dd56000830184613db1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613e1b57613e1a613ddb565b5b50565b6000819050613e2c82613e0a565b919050565b6000613e3c82613e1e565b9050919050565b613e4c81613e31565b82525050565b6000613e5d82613d41565b9050919050565b613e6d81613e52565b82525050565b613e7c81613ca8565b82525050565b600060c082019050613e976000830189613e43565b613ea46020830188613e64565b613eb16040830187613e73565b613ebe6060830186613e73565b613ecb6080830185613e73565b613ed860a0830184613e73565b979650505050505050565b613eec81613e52565b8114613ef757600080fd5b50565b600081359050613f0981613ee3565b92915050565b600060208284031215613f2557613f24613c9e565b5b6000613f3384828501613efa565b91505092915050565b6000602082019050613f516000830184613e73565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f9982613c28565b810181811067ffffffffffffffff82111715613fb857613fb7613f61565b5b80604052505050565b6000613fcb613c94565b9050613fd78282613f90565b919050565b600067ffffffffffffffff821115613ff757613ff6613f61565b5b61400082613c28565b9050602081019050919050565b82818337600083830152505050565b600061402f61402a84613fdc565b613fc1565b90508281526020810184848401111561404b5761404a613f5c565b5b61405684828561400d565b509392505050565b600082601f83011261407357614072613f57565b5b813561408384826020860161401c565b91505092915050565b600080604083850312156140a3576140a2613c9e565b5b60006140b185828601613efa565b925050602083013567ffffffffffffffff8111156140d2576140d1613ca3565b5b6140de8582860161405e565b9150509250929050565b60006140f382613d8d565b9050919050565b614103816140e8565b82525050565b600060208201905061411e60008301846140fa565b92915050565b600061412f82613d8d565b9050919050565b61413f81614124565b82525050565b600060208201905061415a6000830184614136565b92915050565b6002811061416d57600080fd5b50565b60008135905061417f81614160565b92915050565b60006020828403121561419b5761419a613c9e565b5b60006141a984828501614170565b91505092915050565b6000819050919050565b6141c5816141b2565b82525050565b60006020820190506141e060008301846141bc565b92915050565b6000806000606084860312156141ff576141fe613c9e565b5b600061420d86828701614170565b935050602061421e86828701613efa565b925050604061422f86828701613cc9565b9150509250925092565b600080604083850312156142505761424f613c9e565b5b600061425e85828601613cc9565b925050602061426f85828601613cc9565b9150509250929050565b600080604083850312156142905761428f613c9e565b5b600061429e85828601614170565b92505060206142af85828601613efa565b9150509250929050565b600080fd5b600080fd5b60008083601f8401126142d9576142d8613f57565b5b8235905067ffffffffffffffff8111156142f6576142f56142b9565b5b602083019150836001820283011115614312576143116142be565b5b9250929050565b600080602083850312156143305761432f613c9e565b5b600083013567ffffffffffffffff81111561434e5761434d613ca3565b5b61435a858286016142c3565b92509250509250929050565b600060608201905061437b6000830186613e73565b6143886020830185613e73565b6143956040830184613e73565b949350505050565b60008083601f8401126143b3576143b2613f57565b5b8235905067ffffffffffffffff8111156143d0576143cf6142b9565b5b6020830191508360208202830111156143ec576143eb6142be565b5b9250929050565b60008060006040848603121561440c5761440b613c9e565b5b600061441a86828701613efa565b935050602084013567ffffffffffffffff81111561443b5761443a613ca3565b5b6144478682870161439d565b92509250509250925092565b60006020820190506144686000830184613e64565b92915050565b600061447982613e52565b9050919050565b6144898161446e565b811461449457600080fd5b50565b6000813590506144a681614480565b92915050565b60006144b782613e52565b9050919050565b6144c7816144ac565b81146144d257600080fd5b50565b6000813590506144e4816144be565b92915050565b60006144f582613e52565b9050919050565b614505816144ea565b811461451057600080fd5b50565b600081359050614522816144fc565b92915050565b600061453382613e52565b9050919050565b61454381614528565b811461454e57600080fd5b50565b6000813590506145608161453a565b92915050565b60008060008060008060008060c0898b03121561458657614585613c9e565b5b60006145948b828c01614497565b98505060206145a58b828c016144d5565b97505060406145b68b828c01614513565b96505060606145c78b828c01614551565b955050608089013567ffffffffffffffff8111156145e8576145e7613ca3565b5b6145f48b828c016142c3565b945094505060a089013567ffffffffffffffff81111561461757614616613ca3565b5b6146238b828c016142c3565b92509250509295985092959890939650565b600061464082613d8d565b9050919050565b61465081614635565b82525050565b600060208201905061466b6000830184614647565b92915050565b6000806000806080858703121561468b5761468a613c9e565b5b600061469987828801613efa565b94505060206146aa87828801613efa565b93505060406146bb87828801613cc9565b92505060606146cc87828801613cc9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061471f57607f821691505b60208210811415614733576147326146d8565b5b50919050565b600060208201905061474e6000830184613e43565b92915050565b60008151905061476381613cb2565b92915050565b60006020828403121561477f5761477e613c9e565b5b600061478d84828501614754565b91505092915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b60006147f2602c83613be4565b91506147fd82614796565b604082019050919050565b60006020820190508181036000830152614821816147e5565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b6000614884602c83613be4565b915061488f82614828565b604082019050919050565b600060208201905081810360008301526148b381614877565b9050919050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000614916603883613be4565b9150614921826148ba565b604082019050919050565b6000602082019050818103600083015261494581614909565b9050919050565b7f5265656e7472616e637920677561726400000000000000000000000000000000600082015250565b6000614982601083613be4565b915061498d8261494c565b602082019050919050565b600060208201905081810360008301526149b181614975565b9050919050565b6149c181613d0b565b81146149cc57600080fd5b50565b6000815190506149de816149b8565b92915050565b6000602082840312156149fa576149f9613c9e565b5b6000614a08848285016149cf565b91505092915050565b6000604082019050614a266000830185613e64565b614a336020830184613e73565b9392505050565b6000606082019050614a4f6000830186613e43565b614a5c6020830185613e64565b614a696040830184613e73565b949350505050565b600081519050614a8081613ee3565b92915050565b600060208284031215614a9c57614a9b613c9e565b5b6000614aaa84828501614a71565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614aed82613ca8565b9150614af883613ca8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b2d57614b2c614ab3565b5b828201905092915050565b6000819050919050565b614b4b81614b38565b82525050565b6000602082019050614b666000830184614b42565b92915050565b6000604082019050614b816000830185613e43565b614b8e6020830184613e64565b9392505050565b6000614ba18385613be4565b9350614bae83858461400d565b614bb783613c28565b840190509392505050565b60006020820190508181036000830152614bdd818486614b95565b90509392505050565b600080600060608486031215614bff57614bfe613c9e565b5b6000614c0d86828701614754565b9350506020614c1e86828701614754565b9250506040614c2f86828701614754565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614c7382613ca8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ca657614ca5614ab3565b5b600182019050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000614d0d602e83613be4565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b6000606082019050614d586000830187613e64565b614d656020830186613e64565b8181036040830152614d78818486614b95565b905095945050505050565b6000819050919050565b600060ff82169050919050565b6000614db5614db0614dab84614d83565b613d61565b614d8d565b9050919050565b614dc581614d9a565b82525050565b6000602082019050614de06000830184614dbc565b92915050565b600081905092915050565b50565b6000614e01600083614de6565b9150614e0c82614df1565b600082019050919050565b6000614e2282614df4565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e88602683613be4565b9150614e9382614e2c565b604082019050919050565b60006020820190508181036000830152614eb781614e7b565b9050919050565b614ec7816141b2565b8114614ed257600080fd5b50565b600081519050614ee481614ebe565b92915050565b600060208284031215614f0057614eff613c9e565b5b6000614f0e84828501614ed5565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000614f73602e83613be4565b9150614f7e82614f17565b604082019050919050565b60006020820190508181036000830152614fa281614f66565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000615005602983613be4565b915061501082614fa9565b604082019050919050565b6000602082019050818103600083015261503481614ff8565b9050919050565b7f456d657267656e6379206272616b65206973206163746976652e20506f73697460008201527f696f6e73206d6179206f6e6c7920626520636c6f7365642e0000000000000000602082015250565b6000615097603883613be4565b91506150a28261503b565b604082019050919050565b600060208201905081810360008301526150c68161508a565b9050919050565b60006060820190506150e26000830186613e64565b6150ef6020830185613e64565b6150fc6040830184613e73565b949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061513a602083613be4565b915061514582615104565b602082019050919050565b600060208201905081810360008301526151698161512d565b9050919050565b60008160001c9050919050565b600060ff82169050919050565b600061519d61519883615170565b61517d565b9050919050565b6151ad81613e31565b82525050565b60008160081c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006151f36151ee836151b3565b6151c0565b9050919050565b61520381613e52565b82525050565b6000819050919050565b600061522661522183615170565b615209565b9050919050565b61523681613ca8565b82525050565b60c0820160008083015490506152518161518a565b61525e60008601826151a4565b50615268816151e0565b61527560208601826151fa565b506001830154905061528681615213565b615293604086018261522d565b50600283015490506152a481615213565b6152b1606086018261522d565b50600383015490506152c281615213565b6152cf608086018261522d565b50600483015490506152e081615213565b6152ed60a086018261522d565b5050505050565b60006101208201905061530a600083018761523c565b61531760c0830186613e64565b61532460e0830185613e73565b615332610100830184613e73565b95945050505050565b60006080820190506153506000830187613e43565b61535d6020830186613e73565b61536a6040830185613e73565b6153776060830184613d17565b95945050505050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006153dc602b83613be4565b91506153e782615380565b604082019050919050565b6000602082019050818103600083015261540b816153cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b600061549d602d83613be4565b91506154a882615441565b604082019050919050565b600060208201905081810360008301526154cc81615490565b9050919050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061552f602a83613be4565b915061553a826154d3565b604082019050919050565b6000602082019050818103600083015261555e81615522565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006155c1602683613be4565b91506155cc82615565565b604082019050919050565b600060208201905081810360008301526155f0816155b4565b9050919050565b600081519050919050565b600061560d826155f7565b6156178185614de6565b9350615627818560208601613bf5565b80840191505092915050565b600061563f8284615602565b915081905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006156a6602683613be4565b91506156b18261564a565b604082019050919050565b600060208201905081810360008301526156d581615699565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615712601d83613be4565b915061571d826156dc565b602082019050919050565b6000602082019050818103600083015261574181615705565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203014cf2ef956c85c3e75df4976cee00b790ddbd7829ea7f4e618b6f34d73152564736f6c63430008090033",
    "deployedBytecode": "0x6080604052600436106101d85760003560e01c806371488c9611610102578063a2a1079f11610095578063ef5ae54611610064578063ef5ae54614610678578063f2fde38b146106b5578063f39e321f146106de578063f86d054514610709576101d8565b8063a2a1079f146105aa578063b86a0aaa146105d5578063daecdff614610612578063e253433e1461064f576101d8565b80638d321896116100d15780638d321896146105045780638da5cb5b1461052d5780639317c20014610558578063a126d60114610581576101d8565b806371488c961461045a578063715018a614610497578063750521f5146104ae5780637f78c3be146104d7576101d8565b806344add44b1161017a5780635148bbcb116101495780635148bbcb146103ba57806352d1902d146103f7578063538fe6af146104225780636fe5452c1461043e576101d8565b806344add44b1461031d5780634f1ef286146103485780634fb3ccc5146103645780635037b7e91461038f576101d8565b80630ba6a356116101b65780630ba6a35614610270578063223c41ac14610287578063260cca61146102b25780633659cfe6146102f4576101d8565b806303ee438c146101dd57806306fdde03146102085780630a91881414610233575b600080fd5b3480156101e957600080fd5b506101f2610734565b6040516101ff9190613c72565b60405180910390f35b34801561021457600080fd5b5061021d6107c2565b60405161022a9190613c72565b60405180910390f35b34801561023f57600080fd5b5061025a60048036038101906102559190613cde565b610850565b6040516102679190613d26565b60405180910390f35b34801561027c57600080fd5b50610285610986565b005b34801561029357600080fd5b5061029c610a0a565b6040516102a99190613dc0565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190613cde565b610a30565b6040516102eb96959493929190613e82565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190613f0f565b610a99565b005b34801561032957600080fd5b50610332610c22565b60405161033f9190613f3c565b60405180910390f35b610362600480360381019061035d919061408c565b610cc9565b005b34801561037057600080fd5b50610379610e06565b6040516103869190614109565b60405180910390f35b34801561039b57600080fd5b506103a4610e2c565b6040516103b19190614145565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190614185565b610e52565b6040516103ee9190613f3c565b60405180910390f35b34801561040357600080fd5b5061040c610f06565b60405161041991906141cb565b60405180910390f35b61043c600480360381019061043791906141e6565b610fbf565b005b61045860048036038101906104539190614239565b61172f565b005b34801561046657600080fd5b50610481600480360381019061047c9190614279565b611de6565b60405161048e9190613f3c565b60405180910390f35b3480156104a357600080fd5b506104ac611e9d565b005b3480156104ba57600080fd5b506104d560048036038101906104d09190614319565b611eb1565b005b3480156104e357600080fd5b506104ec611f08565b6040516104fb93929190614366565b60405180910390f35b34801561051057600080fd5b5061052b600480360381019061052691906143f3565b611fb8565b005b34801561053957600080fd5b50610542612089565b60405161054f9190614453565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190614566565b6120b3565b005b34801561058d57600080fd5b506105a860048036038101906105a39190613cde565b612377565b005b3480156105b657600080fd5b506105bf612384565b6040516105cc9190614656565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190613cde565b6123aa565b6040516106099190613f3c565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613cde565b61260d565b6040516106469190613d26565b60405180910390f35b34801561065b57600080fd5b5061067660048036038101906106719190614671565b61263c565b005b34801561068457600080fd5b5061069f600480360381019061069a9190614185565b6128c4565b6040516106ac9190613f3c565b60405180910390f35b3480156106c157600080fd5b506106dc60048036038101906106d79190613f0f565b612978565b005b3480156106ea57600080fd5b506106f36129fc565b6040516107009190613f3c565b60405180910390f35b34801561071557600080fd5b5061071e612a02565b60405161072b9190613f3c565b60405180910390f35b60d1805461074190614707565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90614707565b80156107ba5780601f1061078f576101008083540402835291602001916107ba565b820191906000526020600020905b81548152906001019060200180831161079d57829003601f168201915b505050505081565b60d080546107cf90614707565b80601f01602080910402602001604051908101604052809291908181526020018280546107fb90614707565b80156108485780601f1061081d57610100808354040283529160200191610848565b820191906000526020600020905b81548152906001019060200180831161082b57829003601f168201915b505050505081565b600081600160cd60008381526020019081526020016000206002015410156108a4576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cd60008581526020019081526020016000209050806003015460cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635148bbcb8360000160009054906101000a900460ff166040518263ffffffff1660e01b815260040161092c9190614739565b60206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c9190614769565b1192505050919050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109f057600080fd5b505af1158015610a04573d6000803e3d6000fd5b50505050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60cd6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154905086565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f90614808565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b67612a08565b73ffffffffffffffffffffffffffffffffffffffff1614610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb49061489a565b60405180910390fd5b610bc681612a5f565b610c1f81600067ffffffffffffffff811115610be557610be4613f61565b5b6040519080825280601f01601f191660200182016040528015610c175781602001600182028036833780820191505090505b506000612a6a565b50565b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344add44b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8c57600080fd5b505afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190614769565b905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90614808565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97612a08565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49061489a565b60405180910390fd5b610df682612a5f565b610e0282826001612a6a565b5050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635148bbcb836040518263ffffffff1660e01b8152600401610eaf9190614739565b60206040518083038186803b158015610ec757600080fd5b505afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190614769565b9050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d9061492c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60d260009054906101000a900460ff161561100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100690614998565b60405180910390fd5b600160d260006101000a81548160ff021916908315150217905550611032612be7565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fb92558836040518263ffffffff1660e01b815260040161108d9190614453565b60206040518083038186803b1580156110a557600080fd5b505afa1580156110b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dd91906149e4565b611113576040517f2263f4e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bb8845884846040518363ffffffff1660e01b8152600401611172929190614a11565b60206040518083038186803b15801561118a57600080fd5b505afa15801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c29190614769565b90506305f5e100811015611202576040517fdacd896000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561123e5750348214155b806112825750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112815750600034115b5b156112b9576040517fdd944ae300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461139d5761139c3330848673ffffffffffffffffffffffffffffffffffffffff16612cc9909392919063ffffffff16565b5b60006113a7612d52565b9050600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df4ca65d8787876040518463ffffffff1660e01b815260040161140a93929190614a3a565b602060405180830381600087803b15801561142457600080fd5b505af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c9190614769565b90506040518060c0016040528087600181111561147c5761147b613ddb565b5b81526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020018381526020014281526020014281525060cd600084815260200190815260200160002060008201518160000160006101000a81548160ff021916908360018111156114f1576114f0613ddb565b5b021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201556080820151816003015560a082015181600401559050503373ffffffffffffffffffffffffffffffffffffffff16827ffe48a5a755ff0884e318d222d6178d5a66cdfade75ce40f5c9d8cc43bafeffe488888860ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bb884588c8c6040518363ffffffff1660e01b8152600401611601929190614a11565b60206040518083038186803b15801561161957600080fd5b505afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190614769565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344add44b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190614769565b8860405161170496959493929190613e82565b60405180910390a3505050600060d260006101000a81548160ff021916908315150217905550505050565b813373ffffffffffffffffffffffffffffffffffffffff1660cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016117a29190613f3c565b60206040518083038186803b1580156117ba57600080fd5b505afa1580156117ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f29190614a86565b73ffffffffffffffffffffffffffffffffffffffff161461183f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d260009054906101000a900460ff161561188f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188690614998565b60405180910390fd5b600160d260006101000a81548160ff0219169083151502179055506118b2612be7565b6118bb8361260d565b6118f1576040517f0ad455e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561192c576040517f698669ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cd60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156119a35750348314155b80611a0b5750600073ffffffffffffffffffffffffffffffffffffffff168160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611a0a5750600034115b5b15611a42576040517fdd944ae300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611aac57600080fd5b505af1158015611ac0573d6000803e3d6000fd5b50505050611acd84610850565b15611b04576040517f8b947e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637997ef768360000160009054906101000a900460ff168460000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b8152600401611b9a93929190614a3a565b602060405180830381600087803b158015611bb457600080fd5b505af1158015611bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bec9190614769565b905080826001016000828254611c029190614ae2565b92505081905550428260040181905550600073ffffffffffffffffffffffffffffffffffffffff168260000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbc57611cbb3330868560000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cc9909392919063ffffffff16565b5b847f9d7414472f717282fd60ccd0c0dcb25649a9185c68ca5a73309264fe66d1d69760ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bb884588560000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b8152600401611d5f929190614a11565b60206040518083038186803b158015611d7757600080fd5b505afa158015611d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611daf9190614769565b604051611dbc9190614b51565b60405180910390a25050600060d260006101000a81548160ff021916908315150217905550505050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166371488c9684846040518363ffffffff1660e01b8152600401611e45929190614b6c565b60206040518083038186803b158015611e5d57600080fd5b505afa158015611e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e959190614769565b905092915050565b611ea5612e06565b611eaf6000612e84565b565b611eb9612e06565b818160d19190611eca929190613b36565b507fefafb90526da1636e1335eac0151301742fb755d986954c613b90e891778ba398282604051611efc929190614bc2565b60405180910390a15050565b600080600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f78c3be6040518163ffffffff1660e01b815260040160606040518083038186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fad9190614be6565b925092509250909192565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82829050811015612083576120708484848481811061206457612063614c39565b5b90506020020135612f4a565b808061207b90614c68565b915050612042565b50505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900460ff161590508080156120e45750600160008054906101000a900460ff1660ff16105b8061211157506120f330613418565b1580156121105750600160008054906101000a900460ff1660ff16145b5b612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614d23565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561218d576001600060016101000a81548160ff0219169083151502179055505b61219561343b565b61219d613494565b8860c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508760ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560cc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460d091906122b2929190613b36565b50828260d191906122c4929190613b36565b50611c2060cf81905550601e60ce819055507f9b7f72f0f14a7902f022b31f141744d17e6858e0827096e4b7b944528ca8bd9c8988858560405161230b9493929190614d43565b60405180910390a1801561236c5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516123639190614dcb565b60405180910390a15b505050505050505050565b6123813382612f4a565b50565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600160cd60008381526020019081526020016000206002015410156123fe576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61240783610850565b156124155760009150612607565b600060cd60008581526020019081526020016000209050600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166371488c968360000160009054906101000a900460ff168460000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016124c0929190614b6c565b60206040518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125109190614769565b905061260281836001015460cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663edb89f7e8660000160009054906101000a900460ff168760000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016125ad929190614b6c565b60206040518083038186803b1580156125c557600080fd5b505afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fd9190614769565b6134e5565b935050505b50919050565b600060cf5460cd6000848152602001908152602001600020600401546126339190614ae2565b42119050919050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126c3576040517fbaf4cbdd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156128565760008373ffffffffffffffffffffffffffffffffffffffff168360405161271e90614e17565b60006040518083038185875af1925050503d806000811461275b576040519150601f19603f3d011682016040523d82523d6000602084013e612760565b606091505b505090508061279b576040517f3022f2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008211156128505760006127ae612089565b73ffffffffffffffffffffffffffffffffffffffff16836040516127d190614e17565b60006040518083038185875af1925050503d806000811461280e576040519150601f19603f3d011682016040523d82523d6000602084013e612813565b606091505b505090508061284e576040517f3022f2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b506128be565b61288183838673ffffffffffffffffffffffffffffffffffffffff166135c19092919063ffffffff16565b60008111156128bd576128bc612895612089565b828673ffffffffffffffffffffffffffffffffffffffff166135c19092919063ffffffff16565b5b5b50505050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef5ae546836040518263ffffffff1660e01b81526004016129219190614739565b60206040518083038186803b15801561293957600080fd5b505afa15801561294d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129719190614769565b9050919050565b612980612e06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e790614e9e565b60405180910390fd5b6129f981612e84565b50565b60cf5481565b60ce5481565b6000612a367f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b613647565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612a67612e06565b50565b612a967f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b613651565b60000160009054906101000a900460ff1615612aba57612ab58361365b565b612be2565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b0057600080fd5b505afa925050508015612b3157506040513d601f19601f82011682018060405250810190612b2e9190614eea565b60015b612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6790614f89565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114612bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcc9061501b565b60405180910390fd5b50612be1838383613714565b5b505050565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1ccbd886040518163ffffffff1660e01b815260040160206040518083038186803b158015612c4f57600080fd5b505afa158015612c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8791906149e4565b15612cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbe906150ad565b60405180910390fd5b565b612d4c846323b872dd60e01b858585604051602401612cea939291906150cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613740565b50505050565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c43879d5336040518263ffffffff1660e01b8152600401612daf9190614453565b602060405180830381600087803b158015612dc957600080fd5b505af1158015612ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e019190614769565b905090565b612e0e613807565b73ffffffffffffffffffffffffffffffffffffffff16612e2c612089565b73ffffffffffffffffffffffffffffffffffffffff1614612e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7990615150565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60d260009054906101000a900460ff1615612f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9190614998565b60405180910390fd5b600160d260006101000a81548160ff02191690831515021790555060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1ccbd886040518163ffffffff1660e01b815260040160206040518083038186803b15801561301d57600080fd5b505afa158015613031573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305591906149e4565b15801561306857506130668161260d565b155b1561309f576040517f0ad455e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060cd6000838152602001908152602001600020905060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ba6a3566040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312057600080fd5b505af1158015613134573d6000803e3d6000fd5b5050505060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663067bba6e84846040518363ffffffff1660e01b8152600401613195929190614a11565b600060405180830381600087803b1580156131af57600080fd5b505af11580156131c3573d6000803e3d6000fd5b5050505060006131d2836123aa565b90506131dd83610850565b6132795760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b5cfc46838660ce546127106040518563ffffffff1660e01b815260040161324694939291906152f4565b600060405180830381600087803b15801561326057600080fd5b505af1158015613274573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff16837f0c604c8c6e0078dad58f340a712904ca423c20dcd5e2468836a33322befdf5cd8460000160009054906101000a900460ff168460c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344add44b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561332d57600080fd5b505afa158015613341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133659190614769565b61336e89610850565b60405161337e949392919061533b565b60405180910390a360cd6000848152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160009055600482016000905550505050600060d260006101000a81548160ff0219169083151502179055505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661348a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613481906153f2565b60405180910390fd5b61349261380f565b565b600060019054906101000a900460ff166134e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134da906153f2565b60405180910390fd5b565b6000806000801985870985870292508281108382030391505060008114156135215783828161351757613516615412565b5b04925050506135ba565b80841161352d57600080fd5b60008486880990508281118203915080830392506000600186190186169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b6136428363a9059cbb60e01b84846040516024016135e0929190614a11565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613740565b505050565b6000819050919050565b6000819050919050565b61366481613418565b6136a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369a906154b3565b60405180910390fd5b806136d07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b613647565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61371d83613870565b60008251118061372a5750805b1561373b5761373983836138bf565b505b505050565b60006137a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166139a39092919063ffffffff16565b905060008151111561380257808060200190518101906137c291906149e4565b613801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f890615545565b60405180910390fd5b5b505050565b600033905090565b600060019054906101000a900460ff1661385e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613855906153f2565b60405180910390fd5b61386e613869613807565b612e84565b565b6138798161365b565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606138ca83613418565b613909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613900906155d7565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516139319190615633565b600060405180830381855af49150503d806000811461396c576040519150601f19603f3d011682016040523d82523d6000602084013e613971565b606091505b50915091506139998282604051806060016040528060278152602001615749602791396139bb565b9250505092915050565b60606139b28484600085613a22565b90509392505050565b606083156139cb57829050613a1b565b6000835111156139de5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a129190613c72565b60405180910390fd5b9392505050565b606082471015613a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a5e906156bc565b60405180910390fd5b613a7085613418565b613aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa690615728565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ad89190615633565b60006040518083038185875af1925050503d8060008114613b15576040519150601f19603f3d011682016040523d82523d6000602084013e613b1a565b606091505b5091509150613b2a8282866139bb565b92505050949350505050565b828054613b4290614707565b90600052602060002090601f016020900481019282613b645760008555613bab565b82601f10613b7d57803560ff1916838001178555613bab565b82800160010185558215613bab579182015b82811115613baa578235825591602001919060010190613b8f565b5b509050613bb89190613bbc565b5090565b5b80821115613bd5576000816000905550600101613bbd565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c13578082015181840152602081019050613bf8565b83811115613c22576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c4482613bd9565b613c4e8185613be4565b9350613c5e818560208601613bf5565b613c6781613c28565b840191505092915050565b60006020820190508181036000830152613c8c8184613c39565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613cbb81613ca8565b8114613cc657600080fd5b50565b600081359050613cd881613cb2565b92915050565b600060208284031215613cf457613cf3613c9e565b5b6000613d0284828501613cc9565b91505092915050565b60008115159050919050565b613d2081613d0b565b82525050565b6000602082019050613d3b6000830184613d17565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613d86613d81613d7c84613d41565b613d61565b613d41565b9050919050565b6000613d9882613d6b565b9050919050565b6000613daa82613d8d565b9050919050565b613dba81613d9f565b82525050565b6000602082019050613dd56000830184613db1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613e1b57613e1a613ddb565b5b50565b6000819050613e2c82613e0a565b919050565b6000613e3c82613e1e565b9050919050565b613e4c81613e31565b82525050565b6000613e5d82613d41565b9050919050565b613e6d81613e52565b82525050565b613e7c81613ca8565b82525050565b600060c082019050613e976000830189613e43565b613ea46020830188613e64565b613eb16040830187613e73565b613ebe6060830186613e73565b613ecb6080830185613e73565b613ed860a0830184613e73565b979650505050505050565b613eec81613e52565b8114613ef757600080fd5b50565b600081359050613f0981613ee3565b92915050565b600060208284031215613f2557613f24613c9e565b5b6000613f3384828501613efa565b91505092915050565b6000602082019050613f516000830184613e73565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f9982613c28565b810181811067ffffffffffffffff82111715613fb857613fb7613f61565b5b80604052505050565b6000613fcb613c94565b9050613fd78282613f90565b919050565b600067ffffffffffffffff821115613ff757613ff6613f61565b5b61400082613c28565b9050602081019050919050565b82818337600083830152505050565b600061402f61402a84613fdc565b613fc1565b90508281526020810184848401111561404b5761404a613f5c565b5b61405684828561400d565b509392505050565b600082601f83011261407357614072613f57565b5b813561408384826020860161401c565b91505092915050565b600080604083850312156140a3576140a2613c9e565b5b60006140b185828601613efa565b925050602083013567ffffffffffffffff8111156140d2576140d1613ca3565b5b6140de8582860161405e565b9150509250929050565b60006140f382613d8d565b9050919050565b614103816140e8565b82525050565b600060208201905061411e60008301846140fa565b92915050565b600061412f82613d8d565b9050919050565b61413f81614124565b82525050565b600060208201905061415a6000830184614136565b92915050565b6002811061416d57600080fd5b50565b60008135905061417f81614160565b92915050565b60006020828403121561419b5761419a613c9e565b5b60006141a984828501614170565b91505092915050565b6000819050919050565b6141c5816141b2565b82525050565b60006020820190506141e060008301846141bc565b92915050565b6000806000606084860312156141ff576141fe613c9e565b5b600061420d86828701614170565b935050602061421e86828701613efa565b925050604061422f86828701613cc9565b9150509250925092565b600080604083850312156142505761424f613c9e565b5b600061425e85828601613cc9565b925050602061426f85828601613cc9565b9150509250929050565b600080604083850312156142905761428f613c9e565b5b600061429e85828601614170565b92505060206142af85828601613efa565b9150509250929050565b600080fd5b600080fd5b60008083601f8401126142d9576142d8613f57565b5b8235905067ffffffffffffffff8111156142f6576142f56142b9565b5b602083019150836001820283011115614312576143116142be565b5b9250929050565b600080602083850312156143305761432f613c9e565b5b600083013567ffffffffffffffff81111561434e5761434d613ca3565b5b61435a858286016142c3565b92509250509250929050565b600060608201905061437b6000830186613e73565b6143886020830185613e73565b6143956040830184613e73565b949350505050565b60008083601f8401126143b3576143b2613f57565b5b8235905067ffffffffffffffff8111156143d0576143cf6142b9565b5b6020830191508360208202830111156143ec576143eb6142be565b5b9250929050565b60008060006040848603121561440c5761440b613c9e565b5b600061441a86828701613efa565b935050602084013567ffffffffffffffff81111561443b5761443a613ca3565b5b6144478682870161439d565b92509250509250925092565b60006020820190506144686000830184613e64565b92915050565b600061447982613e52565b9050919050565b6144898161446e565b811461449457600080fd5b50565b6000813590506144a681614480565b92915050565b60006144b782613e52565b9050919050565b6144c7816144ac565b81146144d257600080fd5b50565b6000813590506144e4816144be565b92915050565b60006144f582613e52565b9050919050565b614505816144ea565b811461451057600080fd5b50565b600081359050614522816144fc565b92915050565b600061453382613e52565b9050919050565b61454381614528565b811461454e57600080fd5b50565b6000813590506145608161453a565b92915050565b60008060008060008060008060c0898b03121561458657614585613c9e565b5b60006145948b828c01614497565b98505060206145a58b828c016144d5565b97505060406145b68b828c01614513565b96505060606145c78b828c01614551565b955050608089013567ffffffffffffffff8111156145e8576145e7613ca3565b5b6145f48b828c016142c3565b945094505060a089013567ffffffffffffffff81111561461757614616613ca3565b5b6146238b828c016142c3565b92509250509295985092959890939650565b600061464082613d8d565b9050919050565b61465081614635565b82525050565b600060208201905061466b6000830184614647565b92915050565b6000806000806080858703121561468b5761468a613c9e565b5b600061469987828801613efa565b94505060206146aa87828801613efa565b93505060406146bb87828801613cc9565b92505060606146cc87828801613cc9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061471f57607f821691505b60208210811415614733576147326146d8565b5b50919050565b600060208201905061474e6000830184613e43565b92915050565b60008151905061476381613cb2565b92915050565b60006020828403121561477f5761477e613c9e565b5b600061478d84828501614754565b91505092915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b60006147f2602c83613be4565b91506147fd82614796565b604082019050919050565b60006020820190508181036000830152614821816147e5565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b6000614884602c83613be4565b915061488f82614828565b604082019050919050565b600060208201905081810360008301526148b381614877565b9050919050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000614916603883613be4565b9150614921826148ba565b604082019050919050565b6000602082019050818103600083015261494581614909565b9050919050565b7f5265656e7472616e637920677561726400000000000000000000000000000000600082015250565b6000614982601083613be4565b915061498d8261494c565b602082019050919050565b600060208201905081810360008301526149b181614975565b9050919050565b6149c181613d0b565b81146149cc57600080fd5b50565b6000815190506149de816149b8565b92915050565b6000602082840312156149fa576149f9613c9e565b5b6000614a08848285016149cf565b91505092915050565b6000604082019050614a266000830185613e64565b614a336020830184613e73565b9392505050565b6000606082019050614a4f6000830186613e43565b614a5c6020830185613e64565b614a696040830184613e73565b949350505050565b600081519050614a8081613ee3565b92915050565b600060208284031215614a9c57614a9b613c9e565b5b6000614aaa84828501614a71565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614aed82613ca8565b9150614af883613ca8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b2d57614b2c614ab3565b5b828201905092915050565b6000819050919050565b614b4b81614b38565b82525050565b6000602082019050614b666000830184614b42565b92915050565b6000604082019050614b816000830185613e43565b614b8e6020830184613e64565b9392505050565b6000614ba18385613be4565b9350614bae83858461400d565b614bb783613c28565b840190509392505050565b60006020820190508181036000830152614bdd818486614b95565b90509392505050565b600080600060608486031215614bff57614bfe613c9e565b5b6000614c0d86828701614754565b9350506020614c1e86828701614754565b9250506040614c2f86828701614754565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614c7382613ca8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ca657614ca5614ab3565b5b600182019050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000614d0d602e83613be4565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b6000606082019050614d586000830187613e64565b614d656020830186613e64565b8181036040830152614d78818486614b95565b905095945050505050565b6000819050919050565b600060ff82169050919050565b6000614db5614db0614dab84614d83565b613d61565b614d8d565b9050919050565b614dc581614d9a565b82525050565b6000602082019050614de06000830184614dbc565b92915050565b600081905092915050565b50565b6000614e01600083614de6565b9150614e0c82614df1565b600082019050919050565b6000614e2282614df4565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e88602683613be4565b9150614e9382614e2c565b604082019050919050565b60006020820190508181036000830152614eb781614e7b565b9050919050565b614ec7816141b2565b8114614ed257600080fd5b50565b600081519050614ee481614ebe565b92915050565b600060208284031215614f0057614eff613c9e565b5b6000614f0e84828501614ed5565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000614f73602e83613be4565b9150614f7e82614f17565b604082019050919050565b60006020820190508181036000830152614fa281614f66565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000615005602983613be4565b915061501082614fa9565b604082019050919050565b6000602082019050818103600083015261503481614ff8565b9050919050565b7f456d657267656e6379206272616b65206973206163746976652e20506f73697460008201527f696f6e73206d6179206f6e6c7920626520636c6f7365642e0000000000000000602082015250565b6000615097603883613be4565b91506150a28261503b565b604082019050919050565b600060208201905081810360008301526150c68161508a565b9050919050565b60006060820190506150e26000830186613e64565b6150ef6020830185613e64565b6150fc6040830184613e73565b949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061513a602083613be4565b915061514582615104565b602082019050919050565b600060208201905081810360008301526151698161512d565b9050919050565b60008160001c9050919050565b600060ff82169050919050565b600061519d61519883615170565b61517d565b9050919050565b6151ad81613e31565b82525050565b60008160081c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006151f36151ee836151b3565b6151c0565b9050919050565b61520381613e52565b82525050565b6000819050919050565b600061522661522183615170565b615209565b9050919050565b61523681613ca8565b82525050565b60c0820160008083015490506152518161518a565b61525e60008601826151a4565b50615268816151e0565b61527560208601826151fa565b506001830154905061528681615213565b615293604086018261522d565b50600283015490506152a481615213565b6152b1606086018261522d565b50600383015490506152c281615213565b6152cf608086018261522d565b50600483015490506152e081615213565b6152ed60a086018261522d565b5050505050565b60006101208201905061530a600083018761523c565b61531760c0830186613e64565b61532460e0830185613e73565b615332610100830184613e73565b95945050505050565b60006080820190506153506000830187613e43565b61535d6020830186613e73565b61536a6040830185613e73565b6153776060830184613d17565b95945050505050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006153dc602b83613be4565b91506153e782615380565b604082019050919050565b6000602082019050818103600083015261540b816153cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b600061549d602d83613be4565b91506154a882615441565b604082019050919050565b600060208201905081810360008301526154cc81615490565b9050919050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061552f602a83613be4565b915061553a826154d3565b604082019050919050565b6000602082019050818103600083015261555e81615522565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006155c1602683613be4565b91506155cc82615565565b604082019050919050565b600060208201905081810360008301526155f0816155b4565b9050919050565b600081519050919050565b600061560d826155f7565b6156178185614de6565b9350615627818560208601613bf5565b80840191505092915050565b600061563f8284615602565b915081905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006156a6602683613be4565b91506156b18261564a565b604082019050919050565b600060208201905081810360008301526156d581615699565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615712601d83613be4565b915061571d826156dc565b602082019050919050565b6000602082019050818103600083015261574181615705565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203014cf2ef956c85c3e75df4976cee00b790ddbd7829ea7f4e618b6f34d73152564736f6c63430008090033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
