{
  "contractName": "CheckpointedToken",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "checkpointId",
          "type": "uint256"
        }
      ],
      "name": "CheckpointCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "holder",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "balanceOfAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "checkpointId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "end",
          "type": "uint256"
        }
      ],
      "name": "getHolderSubsetAt",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "checkpointId",
          "type": "uint256"
        }
      ],
      "name": "getHoldersAt",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNumberOfHolders",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "holderCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "totalSupplyAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611775806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80634cd88b76116100a257806395d89b411161007157806395d89b4114610227578063981b24d01461022f578063a457c2d714610242578063a9059cbb14610255578063dd62ed3e1461026857610116565b80634cd88b76146101d95780634ee2cd7e146101ee578063520fdd221461020157806370a082311461021457610116565b806323b872dd116100e957806323b872dd14610176578063308feec314610189578063313ce5671461019157806331801925146101a657806339509351146101c657610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd146101595780631aab9a9f1461016e575b600080fd5b61012361027b565b60405161013091906114ba565b60405180910390f35b61014c610147366004611394565b610312565b60405161013091906114af565b610161610330565b60405161013091906116a0565b610161610336565b61014c610184366004611354565b61033c565b6101616103c9565b6101996103cf565b60405161013091906116a9565b6101b96101b4366004611437565b6103d8565b6040516101309190611462565b61014c6101d4366004611394565b6105ef565b6101ec6101e73660046113be565b610643565b005b6101616101fc366004611394565b6106db565b6101b961020f36600461141f565b610704565b610161610222366004611305565b6108b8565b6101236108d3565b61016161023d36600461141f565b610934565b61014c610250366004611394565b610941565b61014c610263366004611394565b6109af565b610161610276366004611320565b6109c3565b60688054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103075780601f106102dc57610100808354040283529160200191610307565b820191906000526020600020905b8154815290600101906020018083116102ea57829003601f168201915b505050505090505b90565b600061032661031f6109ee565b84846109f2565b5060015b92915050565b60675490565b609b5481565b6000610349848484610aa6565b6103bf846103556109ee565b6103ba856040518060600160405280602881526020016116f3602891396001600160a01b038a166000908152606660205260408120906103936109ee565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610abc16565b6109f2565b5060019392505050565b60995490565b606a5460ff1690565b6099546060908083106103ed578390036103f5565b506001838303015b60608167ffffffffffffffff8111801561040e57600080fd5b50604051908082528060200260200182016040528015610438578160200160208202803683370190505b50905060005b8281101561049f5760998682018154811061045557fe5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061047f57fe5b6001600160a01b039092166020928302919091019091015260010161043e565b506000805b82518110156105145760006104cc8483815181106104be57fe5b60200260200101518a6106db565b11156104dd5760019091019061050c565b60008382815181106104eb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016104a4565b60608267ffffffffffffffff8111801561052d57600080fd5b50604051908082528060200260200182016040528015610557578160200160208202803683370190505b50905060009250600091505b83518210156105e35760006001600160a01b031684838151811061058357fe5b60200260200101516001600160a01b0316146105d8578382815181106105a557fe5b60200260200101518184815181106105b957fe5b6001600160a01b03909216602092830291909101909101526001909201915b600190910190610563565b98975050505050505050565b60006103266105fc6109ee565b846103ba856066600061060d6109ee565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610ae816565b600054610100900460ff168061065c575061065c610b0d565b8061066a575060005460ff16155b61068f5760405162461bcd60e51b8152600401610686906115c9565b60405180910390fd5b600054610100900460ff161580156106ba576000805460ff1961ff0019909116610100171660011790555b6106c48383610b13565b80156106d6576000805461ff00191690555b505050565b6001600160a01b03821660009081526098602052604081206106fd9083610b93565b9392505050565b60606000806060609980548060200260200160405190810160405280929190818152602001828054801561076157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610743575b50505050509050600091505b80518210156107e057600061079582848151811061078757fe5b6020026020010151876106db565b11156107a6576001909201916107d5565b60008183815181106107b457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60019091019061076d565b60608367ffffffffffffffff811180156107f957600080fd5b50604051908082528060200260200182016040528015610823578160200160208202803683370190505b50905060009350600092505b81518310156108af5760006001600160a01b031682848151811061084f57fe5b60200260200101516001600160a01b0316146108a45781838151811061087157fe5b602002602001015181858151811061088557fe5b6001600160a01b03909216602092830291909101909101526001909301925b60019092019161082f565b95945050505050565b6001600160a01b031660009081526065602052604090205490565b60698054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103075780601f106102dc57610100808354040283529160200191610307565b600061032a609783610b93565b600061032661094e6109ee565b846103ba8560405180606001604052806025815260200161171b60259139606660006109786109ee565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610abc16565b60006103266109bc6109ee565b8484610aa6565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b3390565b6001600160a01b038316610a185760405162461bcd60e51b81526004016106869061165c565b6001600160a01b038216610a3e5760405162461bcd60e51b815260040161068690611550565b6001600160a01b0380841660008181526066602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a999085906116a0565b60405180910390a3505050565b610ab1838383610cbf565b6106d6838383610de0565b60008184841115610ae05760405162461bcd60e51b815260040161068691906114ba565b505050900390565b6000828201838110156106fd5760405162461bcd60e51b815260040161068690611592565b303b1590565b600054610100900460ff1680610b2c5750610b2c610b0d565b80610b3a575060005460ff16155b610b565760405162461bcd60e51b8152600401610686906115c9565b600054610100900460ff16158015610b81576000805460ff1961ff0019909116610100171660011790555b610b89610e05565b6106c48383610e88565b8154600090610ba45750600061032a565b825483906000198101908110610bb657fe5b60009182526020909120600290910201546001600160801b03168210610c0157825483906000198101908110610be857fe5b906000526020600020906002020160010154905061032a565b82600081548110610c0e57fe5b60009182526020909120600290910201546001600160801b0316821015610c375750600061032a565b8254600090600019015b81811115610c97576000600260018385010104905084868281548110610c6357fe5b60009182526020909120600290910201546001600160801b031611610c8a57809250610c91565b6001810391505b50610c41565b848281548110610ca357fe5b9060005260206000209060020201600101549250505092915050565b6001600160a01b038316610ce55760405162461bcd60e51b815260040161068690611617565b6001600160a01b038216610d0b5760405162461bcd60e51b81526004016106869061150d565b610d168383836106d6565b610d59816040518060600160405280602681526020016116cd602691396001600160a01b038616600090815260656020526040902054919063ffffffff610abc16565b6001600160a01b038085166000908152606560205260408082209390935590841681522054610d8e908263ffffffff610ae816565b6001600160a01b0380841660008181526065602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a999085906116a0565b610deb838383610f41565b610df3611040565b610dfc83611054565b6106d682611054565b600054610100900460ff1680610e1e5750610e1e610b0d565b80610e2c575060005460ff16155b610e485760405162461bcd60e51b8152600401610686906115c9565b600054610100900460ff16158015610e73576000805460ff1961ff0019909116610100171660011790555b8015610e85576000805461ff00191690555b50565b600054610100900460ff1680610ea15750610ea1610b0d565b80610eaf575060005460ff16155b610ecb5760405162461bcd60e51b8152600401610686906115c9565b600054610100900460ff16158015610ef6576000805460ff1961ff0019909116610100171660011790555b8251610f099060689060208601906111d8565b508151610f1d9060699060208501906111d8565b50606a805460ff1916601217905580156106d6576000805461ff0019169055505050565b801580610f5f5750816001600160a01b0316836001600160a01b0316145b15610f69576106d6565b610f72826108b8565b158015610f8757506001600160a01b03821615155b1561101457609b54610fa090600163ffffffff610ae816565b609b55610fac82611079565b611014576099805460018082019092557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b0385169081179091556000908152609a60205260409020805460ff191690911790555b61101d836108b8565b8114156106d657609b5461103890600163ffffffff61109716565b609b55505050565b611052609761104d610330565b6110d9565b565b6001600160a01b0381166000908152609860205260409020610e859061104d836108b8565b6001600160a01b03166000908152609a602052604090205460ff1690565b60006106fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610abc565b8154158061111157508154829060001981019081106110f457fe5b60009182526020909120600290910201546001600160801b031642115b156111a757604080518082018252426001600160801b039081168252602080830185815286546001808201895560008981529384209551600290920290950180546fffffffffffffffffffffffffffffffff1916919094161783555191909201558354915160001992909201917f76735e462dae5480c552f970568dc60e35cc3c4c06eb818f77bbb357593bf7fa9190a26111d4565b8154600090839060001981019081106111bc57fe5b60009182526020909120600160029092020101829055505b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061121957805160ff1916838001178555611246565b82800160010185558215611246579182015b8281111561124657825182559160200191906001019061122b565b50611252929150611256565b5090565b61030f91905b80821115611252576000815560010161125c565b80356001600160a01b038116811461032a57600080fd5b600082601f830112611297578081fd5b813567ffffffffffffffff808211156112ae578283fd5b604051601f8301601f1916810160200182811182821017156112ce578485fd5b6040528281529250828483016020018610156112e957600080fd5b8260208601602083013760006020848301015250505092915050565b600060208284031215611316578081fd5b6106fd8383611270565b60008060408385031215611332578081fd5b61133c8484611270565b915061134b8460208501611270565b90509250929050565b600080600060608486031215611368578081fd5b8335611373816116b7565b92506020840135611383816116b7565b929592945050506040919091013590565b600080604083850312156113a6578182fd5b6113b08484611270565b946020939093013593505050565b600080604083850312156113d0578182fd5b823567ffffffffffffffff808211156113e7578384fd5b6113f386838701611287565b93506020850135915080821115611408578283fd5b5061141585828601611287565b9150509250929050565b600060208284031215611430578081fd5b5035919050565b60008060006060848603121561144b578283fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156114a35783516001600160a01b03168352928401929184019160010161147e565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156114e6578581018301518582016040015282016114ca565b818111156114f75783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b60ff91909116815260200190565b6001600160a01b0381168114610e8557600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203e611fed0abe80aa224bb399ad2f10e1d11fcc875ec39aa7a15839435fc5e01064736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80634cd88b76116100a257806395d89b411161007157806395d89b4114610227578063981b24d01461022f578063a457c2d714610242578063a9059cbb14610255578063dd62ed3e1461026857610116565b80634cd88b76146101d95780634ee2cd7e146101ee578063520fdd221461020157806370a082311461021457610116565b806323b872dd116100e957806323b872dd14610176578063308feec314610189578063313ce5671461019157806331801925146101a657806339509351146101c657610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd146101595780631aab9a9f1461016e575b600080fd5b61012361027b565b60405161013091906114ba565b60405180910390f35b61014c610147366004611394565b610312565b60405161013091906114af565b610161610330565b60405161013091906116a0565b610161610336565b61014c610184366004611354565b61033c565b6101616103c9565b6101996103cf565b60405161013091906116a9565b6101b96101b4366004611437565b6103d8565b6040516101309190611462565b61014c6101d4366004611394565b6105ef565b6101ec6101e73660046113be565b610643565b005b6101616101fc366004611394565b6106db565b6101b961020f36600461141f565b610704565b610161610222366004611305565b6108b8565b6101236108d3565b61016161023d36600461141f565b610934565b61014c610250366004611394565b610941565b61014c610263366004611394565b6109af565b610161610276366004611320565b6109c3565b60688054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103075780601f106102dc57610100808354040283529160200191610307565b820191906000526020600020905b8154815290600101906020018083116102ea57829003601f168201915b505050505090505b90565b600061032661031f6109ee565b84846109f2565b5060015b92915050565b60675490565b609b5481565b6000610349848484610aa6565b6103bf846103556109ee565b6103ba856040518060600160405280602881526020016116f3602891396001600160a01b038a166000908152606660205260408120906103936109ee565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610abc16565b6109f2565b5060019392505050565b60995490565b606a5460ff1690565b6099546060908083106103ed578390036103f5565b506001838303015b60608167ffffffffffffffff8111801561040e57600080fd5b50604051908082528060200260200182016040528015610438578160200160208202803683370190505b50905060005b8281101561049f5760998682018154811061045557fe5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061047f57fe5b6001600160a01b039092166020928302919091019091015260010161043e565b506000805b82518110156105145760006104cc8483815181106104be57fe5b60200260200101518a6106db565b11156104dd5760019091019061050c565b60008382815181106104eb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016104a4565b60608267ffffffffffffffff8111801561052d57600080fd5b50604051908082528060200260200182016040528015610557578160200160208202803683370190505b50905060009250600091505b83518210156105e35760006001600160a01b031684838151811061058357fe5b60200260200101516001600160a01b0316146105d8578382815181106105a557fe5b60200260200101518184815181106105b957fe5b6001600160a01b03909216602092830291909101909101526001909201915b600190910190610563565b98975050505050505050565b60006103266105fc6109ee565b846103ba856066600061060d6109ee565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610ae816565b600054610100900460ff168061065c575061065c610b0d565b8061066a575060005460ff16155b61068f5760405162461bcd60e51b8152600401610686906115c9565b60405180910390fd5b600054610100900460ff161580156106ba576000805460ff1961ff0019909116610100171660011790555b6106c48383610b13565b80156106d6576000805461ff00191690555b505050565b6001600160a01b03821660009081526098602052604081206106fd9083610b93565b9392505050565b60606000806060609980548060200260200160405190810160405280929190818152602001828054801561076157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610743575b50505050509050600091505b80518210156107e057600061079582848151811061078757fe5b6020026020010151876106db565b11156107a6576001909201916107d5565b60008183815181106107b457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60019091019061076d565b60608367ffffffffffffffff811180156107f957600080fd5b50604051908082528060200260200182016040528015610823578160200160208202803683370190505b50905060009350600092505b81518310156108af5760006001600160a01b031682848151811061084f57fe5b60200260200101516001600160a01b0316146108a45781838151811061087157fe5b602002602001015181858151811061088557fe5b6001600160a01b03909216602092830291909101909101526001909301925b60019092019161082f565b95945050505050565b6001600160a01b031660009081526065602052604090205490565b60698054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103075780601f106102dc57610100808354040283529160200191610307565b600061032a609783610b93565b600061032661094e6109ee565b846103ba8560405180606001604052806025815260200161171b60259139606660006109786109ee565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610abc16565b60006103266109bc6109ee565b8484610aa6565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b3390565b6001600160a01b038316610a185760405162461bcd60e51b81526004016106869061165c565b6001600160a01b038216610a3e5760405162461bcd60e51b815260040161068690611550565b6001600160a01b0380841660008181526066602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a999085906116a0565b60405180910390a3505050565b610ab1838383610cbf565b6106d6838383610de0565b60008184841115610ae05760405162461bcd60e51b815260040161068691906114ba565b505050900390565b6000828201838110156106fd5760405162461bcd60e51b815260040161068690611592565b303b1590565b600054610100900460ff1680610b2c5750610b2c610b0d565b80610b3a575060005460ff16155b610b565760405162461bcd60e51b8152600401610686906115c9565b600054610100900460ff16158015610b81576000805460ff1961ff0019909116610100171660011790555b610b89610e05565b6106c48383610e88565b8154600090610ba45750600061032a565b825483906000198101908110610bb657fe5b60009182526020909120600290910201546001600160801b03168210610c0157825483906000198101908110610be857fe5b906000526020600020906002020160010154905061032a565b82600081548110610c0e57fe5b60009182526020909120600290910201546001600160801b0316821015610c375750600061032a565b8254600090600019015b81811115610c97576000600260018385010104905084868281548110610c6357fe5b60009182526020909120600290910201546001600160801b031611610c8a57809250610c91565b6001810391505b50610c41565b848281548110610ca357fe5b9060005260206000209060020201600101549250505092915050565b6001600160a01b038316610ce55760405162461bcd60e51b815260040161068690611617565b6001600160a01b038216610d0b5760405162461bcd60e51b81526004016106869061150d565b610d168383836106d6565b610d59816040518060600160405280602681526020016116cd602691396001600160a01b038616600090815260656020526040902054919063ffffffff610abc16565b6001600160a01b038085166000908152606560205260408082209390935590841681522054610d8e908263ffffffff610ae816565b6001600160a01b0380841660008181526065602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a999085906116a0565b610deb838383610f41565b610df3611040565b610dfc83611054565b6106d682611054565b600054610100900460ff1680610e1e5750610e1e610b0d565b80610e2c575060005460ff16155b610e485760405162461bcd60e51b8152600401610686906115c9565b600054610100900460ff16158015610e73576000805460ff1961ff0019909116610100171660011790555b8015610e85576000805461ff00191690555b50565b600054610100900460ff1680610ea15750610ea1610b0d565b80610eaf575060005460ff16155b610ecb5760405162461bcd60e51b8152600401610686906115c9565b600054610100900460ff16158015610ef6576000805460ff1961ff0019909116610100171660011790555b8251610f099060689060208601906111d8565b508151610f1d9060699060208501906111d8565b50606a805460ff1916601217905580156106d6576000805461ff0019169055505050565b801580610f5f5750816001600160a01b0316836001600160a01b0316145b15610f69576106d6565b610f72826108b8565b158015610f8757506001600160a01b03821615155b1561101457609b54610fa090600163ffffffff610ae816565b609b55610fac82611079565b611014576099805460018082019092557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b0385169081179091556000908152609a60205260409020805460ff191690911790555b61101d836108b8565b8114156106d657609b5461103890600163ffffffff61109716565b609b55505050565b611052609761104d610330565b6110d9565b565b6001600160a01b0381166000908152609860205260409020610e859061104d836108b8565b6001600160a01b03166000908152609a602052604090205460ff1690565b60006106fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610abc565b8154158061111157508154829060001981019081106110f457fe5b60009182526020909120600290910201546001600160801b031642115b156111a757604080518082018252426001600160801b039081168252602080830185815286546001808201895560008981529384209551600290920290950180546fffffffffffffffffffffffffffffffff1916919094161783555191909201558354915160001992909201917f76735e462dae5480c552f970568dc60e35cc3c4c06eb818f77bbb357593bf7fa9190a26111d4565b8154600090839060001981019081106111bc57fe5b60009182526020909120600160029092020101829055505b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061121957805160ff1916838001178555611246565b82800160010185558215611246579182015b8281111561124657825182559160200191906001019061122b565b50611252929150611256565b5090565b61030f91905b80821115611252576000815560010161125c565b80356001600160a01b038116811461032a57600080fd5b600082601f830112611297578081fd5b813567ffffffffffffffff808211156112ae578283fd5b604051601f8301601f1916810160200182811182821017156112ce578485fd5b6040528281529250828483016020018610156112e957600080fd5b8260208601602083013760006020848301015250505092915050565b600060208284031215611316578081fd5b6106fd8383611270565b60008060408385031215611332578081fd5b61133c8484611270565b915061134b8460208501611270565b90509250929050565b600080600060608486031215611368578081fd5b8335611373816116b7565b92506020840135611383816116b7565b929592945050506040919091013590565b600080604083850312156113a6578182fd5b6113b08484611270565b946020939093013593505050565b600080604083850312156113d0578182fd5b823567ffffffffffffffff808211156113e7578384fd5b6113f386838701611287565b93506020850135915080821115611408578283fd5b5061141585828601611287565b9150509250929050565b600060208284031215611430578081fd5b5035919050565b60008060006060848603121561144b578283fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156114a35783516001600160a01b03168352928401929184019160010161147e565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156114e6578581018301518582016040015282016114ca565b818111156114f75783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b60ff91909116815260200190565b6001600160a01b0381168114610e8557600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203e611fed0abe80aa224bb399ad2f10e1d11fcc875ec39aa7a15839435fc5e01064736f6c634300060b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
