{
  "_format": "hh-sol-artifact-1",
  "contractName": "DrawBufferHarness",
  "sourceName": "contracts/test/DrawBufferHarness.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "card",
          "type": "uint8"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "drawId",
          "type": "uint32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "winningRandomNumber",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "beaconPeriodStartedAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "beaconPeriodSeconds",
              "type": "uint32"
            }
          ],
          "indexed": false,
          "internalType": "struct IDrawBeacon.Draw",
          "name": "draw",
          "type": "tuple"
        }
      ],
      "name": "DrawSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousManager",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newManager",
          "type": "address"
        }
      ],
      "name": "ManagerTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipOffered",
      "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"
    },
    {
      "inputs": [],
      "name": "MAX_CARDINALITY",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_numberOfDraws",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_timestamp",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "_winningRandomNumber",
          "type": "uint256"
        }
      ],
      "name": "addMultipleDraws",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBufferCardinality",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "drawId",
          "type": "uint32"
        }
      ],
      "name": "getDraw",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "winningRandomNumber",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "beaconPeriodStartedAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "beaconPeriodSeconds",
              "type": "uint32"
            }
          ],
          "internalType": "struct IDrawBeacon.Draw",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDrawCount",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32[]",
          "name": "_drawIds",
          "type": "uint32[]"
        }
      ],
      "name": "getDraws",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "winningRandomNumber",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "beaconPeriodStartedAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "beaconPeriodSeconds",
              "type": "uint32"
            }
          ],
          "internalType": "struct IDrawBeacon.Draw[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNewestDraw",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "winningRandomNumber",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "beaconPeriodStartedAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "beaconPeriodSeconds",
              "type": "uint32"
            }
          ],
          "internalType": "struct IDrawBeacon.Draw",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOldestDraw",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "winningRandomNumber",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "beaconPeriodStartedAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "beaconPeriodSeconds",
              "type": "uint32"
            }
          ],
          "internalType": "struct IDrawBeacon.Draw",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "manager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "winningRandomNumber",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "beaconPeriodStartedAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "beaconPeriodSeconds",
              "type": "uint32"
            }
          ],
          "internalType": "struct IDrawBeacon.Draw",
          "name": "_draw",
          "type": "tuple"
        }
      ],
      "name": "pushDraw",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "winningRandomNumber",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "beaconPeriodStartedAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "beaconPeriodSeconds",
              "type": "uint32"
            }
          ],
          "internalType": "struct IDrawBeacon.Draw",
          "name": "_newDraw",
          "type": "tuple"
        }
      ],
      "name": "setDraw",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newManager",
          "type": "address"
        }
      ],
      "name": "setManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516200189d3803806200189d833981016040819052610031916100bd565b81818161003d8161006d565b50610203805463ffffffff60401b191660ff92909216680100000000000000000291909117905550610109915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100d057600080fd5b82516001600160a01b03811681146100e757600080fd5b602084015190925060ff811681146100fe57600080fd5b809150509250929050565b61178480620001196000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806383c34aaf116100b2578063d0bb78f311610081578063d7bcb86b11610066578063d7bcb86b1461025a578063e30c39781461026d578063f2fde38b1461027e57600080fd5b8063d0bb78f314610217578063d0ebdbe71461023757600080fd5b806383c34aaf146101d05780638da5cb5b146101e3578063c4df5fed146101f4578063caeef7ec146101fc57600080fd5b80634e71e0c8116100ee5780634e71e0c81461019c578063648b1b4f146101a4578063715018a6146101ac5780638200d873146101b457600080fd5b8063089eb925146101205780630edb1d2e1461014d57806323a11b2014610162578063481c6a7514610177575b600080fd5b61013361012e36600461147a565b610291565b60405163ffffffff90911681526020015b60405180910390f35b61015561035c565b60405161014491906115fd565b61017561017036600461150f565b6103d1565b005b6002546001600160a01b03165b6040516001600160a01b039091168152602001610144565b610175610430565b6101556104be565b610175610613565b6101bd61010081565b60405161ffff9091168152602001610144565b6101556101de36600461154c565b610688565b6000546001600160a01b0316610184565b610133610783565b6102035468010000000000000000900463ffffffff16610133565b61022a610225366004611405565b610825565b6040516101449190611567565b61024a6102453660046113dc565b6109d5565b6040519015158152602001610144565b61013361026836600461147a565b610a49565b6001546001600160a01b0316610184565b61017561028c3660046113dc565b610c36565b6000336102a66002546001600160a01b031690565b6001600160a01b031614806102d45750336102c96000546001600160a01b031690565b6001600160a01b0316145b61034b5760405162461bcd60e51b815260206004820152602660248201527f4d616e61676561626c652f63616c6c65722d6e6f742d6d616e616765722d6f7260448201527f2d6f776e6572000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61035482610d72565b90505b919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152604080516060810182526102035463ffffffff80821683526401000000008204811660208401526801000000000000000090910416918101919091526103cc90610f74565b905090565b835b838111610429576040805160a08101825283815263ffffffff808416602083015285169181019190915260146060820152600a608082015261041481610d72565b50508080610421906116cf565b9150506103d3565b5050505050565b6001546001600160a01b0316331461048a5760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e6572006044820152606401610342565b60015461049f906001600160a01b0316610faf565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152604080516060810182526102035463ffffffff8082168352640100000000820481166020840181905268010000000000000000909204169282019290925290600090600390610100811061053f5761053f611722565b6040805160a08101825260029290920292909201805482526001015463ffffffff808216602084015267ffffffffffffffff640100000000830481169484018590526c010000000000000000000000008304166060840152600160a01b909104166080820152915061060d57506040805160a081018252600354815260045463ffffffff808216602084015267ffffffffffffffff64010000000083048116948401949094526c0100000000000000000000000082049093166060830152600160a01b900490911660808201525b92915050565b336106266000546001600160a01b031690565b6001600160a01b03161461067c5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b6106866000610faf565b565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152604080516060810182526102035463ffffffff80821683526401000000008204811660208401526801000000000000000090910416918101919091526003906106fc908461100c565b63ffffffff16610100811061071357610713611722565b6040805160a08101825260029290920292909201805482526001015463ffffffff808216602084015267ffffffffffffffff64010000000083048116948401949094526c0100000000000000000000000082049093166060830152600160a01b9004909116608082015292915050565b604080516060810182526102035463ffffffff8082168084526401000000008304821660208501526801000000000000000090920416928201929092526000916107cf57600091505090565b6020810151600363ffffffff821661010081106107ee576107ee611722565b6002020160010160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1660001461060d575060400151919050565b606060008267ffffffffffffffff81111561084257610842611738565b60405190808252806020026020018201604052801561089b57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816108605790505b50604080516060810182526102035463ffffffff808216835264010000000082048116602084015268010000000000000000909104169181019190915290915060005b848110156109cb576003610918838888858181106108fe576108fe611722565b9050602002016020810190610913919061154c565b61100c565b63ffffffff16610100811061092f5761092f611722565b6040805160a08101825260029290920292909201805482526001015463ffffffff808216602084015267ffffffffffffffff64010000000083048116948401949094526c0100000000000000000000000082049093166060830152600160a01b9004909116608082015283518490839081106109ad576109ad611722565b602002602001018190525080806109c3906116cf565b9150506108de565b5090949350505050565b6000336109ea6000546001600160a01b031690565b6001600160a01b031614610a405760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b6103548261101f565b600033610a5e6000546001600160a01b031690565b6001600160a01b031614610ab45760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b604080516060810182526102035463ffffffff808216835264010000000082048116602080850191909152680100000000000000009092048116938301939093528401519091600091610b0a9184919061110b16565b90508360038263ffffffff166101008110610b2757610b27611722565b82516002919091029190910190815560208083015160019092018054604080860151606087015160809097015163ffffffff9687166bffffffffffffffffffffffff199094169390931764010000000067ffffffffffffffff92831602177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c0100000000000000000000000091909716027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1695909517600160a01b9185169190910217905586015191519116907fc6f337e5507fd1bdebc6d79ed14168145e8c109d7b7139459692e24f06baed1790610c249087906115fd565b60405180910390a25050506020015190565b33610c496000546001600160a01b031690565b6001600160a01b031614610c9f5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b6001600160a01b038116610d1b5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610342565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b604080516060810182526102035463ffffffff8082168352640100000000820481166020840181905268010000000000000000909204169282019290925260009183906003906101008110610dc957610dc9611722565b825160029190910291909101908155602080830151600190920180546040850151606086015160809096015163ffffffff9586166bffffffffffffffffffffffff199093169290921764010000000067ffffffffffffffff92831602177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c0100000000000000000000000091909616027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1694909417600160a01b948416949094029390931790925590840151610ea59183919061123b16565b8051610203805460208085015160409586015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff928216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909516968216969096179390931716939093179091559085015191519116907fc6f337e5507fd1bdebc6d79ed14168145e8c109d7b7139459692e24f06baed1790610f639086906115fd565b60405180910390a250506020015190565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915281516003906106fc90849061110b565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611018838361110b565b9392505050565b6002546000906001600160a01b039081169083168114156110a85760405162461bcd60e51b815260206004820152602360248201527f4d616e61676561626c652f6578697374696e672d6d616e616765722d6164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610342565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385811691821790925560405190918316907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a350600192915050565b600061111683611326565b80156111325750826000015163ffffffff168263ffffffff1611155b61117e5760405162461bcd60e51b815260206004820152600f60248201527f4452422f6675747572652d6472617700000000000000000000000000000000006044820152606401610342565b825160009061118e9084906116aa565b9050836040015163ffffffff168163ffffffff16106111ef5760405162461bcd60e51b815260206004820152601060248201527f4452422f657870697265642d64726177000000000000000000000000000000006044820152606401610342565b600061120f856020015163ffffffff16866040015163ffffffff1661134e565b90506112328163ffffffff168363ffffffff16876040015163ffffffff1661137c565b95945050505050565b604080516060810182526000808252602082018190529181019190915261126183611326565b15806112845750825161127590600161166b565b63ffffffff168263ffffffff16145b6112d05760405162461bcd60e51b815260206004820152601260248201527f4452422f6d7573742d62652d636f6e74696700000000000000000000000000006044820152606401610342565b60405180606001604052808363ffffffff168152602001611305856020015163ffffffff16866040015163ffffffff16611394565b63ffffffff168152602001846040015163ffffffff16815250905092915050565b6000816020015163ffffffff1660001480156113475750815163ffffffff16155b1592915050565b60008161135d5750600061060d565b611018600161136c8486611653565b6113769190611693565b836113a4565b600061138c8361136c8487611653565b949350505050565b6000611018611376846001611653565b600061101882846116ea565b803563ffffffff8116811461035757600080fd5b803567ffffffffffffffff8116811461035757600080fd5b6000602082840312156113ee57600080fd5b81356001600160a01b038116811461101857600080fd5b6000806020838503121561141857600080fd5b823567ffffffffffffffff8082111561143057600080fd5b818501915085601f83011261144457600080fd5b81358181111561145357600080fd5b8660208260051b850101111561146857600080fd5b60209290920196919550909350505050565b600060a0828403121561148c57600080fd5b60405160a0810181811067ffffffffffffffff821117156114bd57634e487b7160e01b600052604160045260246000fd5b604052823581526114d0602084016113b0565b60208201526114e1604084016113c4565b60408201526114f2606084016113c4565b6060820152611503608084016113b0565b60808201529392505050565b6000806000806080858703121561152557600080fd5b843593506020850135925061153c604086016113b0565b9396929550929360600135925050565b60006020828403121561155e57600080fd5b611018826113b0565b6020808252825182820181905260009190848201906040850190845b818110156115f1576115de83855180518252602081015163ffffffff80821660208501526040830151915067ffffffffffffffff80831660408601528060608501511660608601525080608084015116608085015250505050565b9284019260a09290920191600101611583565b50909695505050505050565b60a0810161060d828480518252602081015163ffffffff80821660208501526040830151915067ffffffffffffffff80831660408601528060608501511660608601525080608084015116608085015250505050565b600082198211156116665761166661170c565b500190565b600063ffffffff80831681851680830382111561168a5761168a61170c565b01949350505050565b6000828210156116a5576116a561170c565b500390565b600063ffffffff838116908316818110156116c7576116c761170c565b039392505050565b60006000198214156116e3576116e361170c565b5060010190565b60008261170757634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220d75d4c731c51fc3ca7debb9b3f18a9b97457bbe9d2c233f05a122358e28e981364736f6c63430008060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c806383c34aaf116100b2578063d0bb78f311610081578063d7bcb86b11610066578063d7bcb86b1461025a578063e30c39781461026d578063f2fde38b1461027e57600080fd5b8063d0bb78f314610217578063d0ebdbe71461023757600080fd5b806383c34aaf146101d05780638da5cb5b146101e3578063c4df5fed146101f4578063caeef7ec146101fc57600080fd5b80634e71e0c8116100ee5780634e71e0c81461019c578063648b1b4f146101a4578063715018a6146101ac5780638200d873146101b457600080fd5b8063089eb925146101205780630edb1d2e1461014d57806323a11b2014610162578063481c6a7514610177575b600080fd5b61013361012e36600461147a565b610291565b60405163ffffffff90911681526020015b60405180910390f35b61015561035c565b60405161014491906115fd565b61017561017036600461150f565b6103d1565b005b6002546001600160a01b03165b6040516001600160a01b039091168152602001610144565b610175610430565b6101556104be565b610175610613565b6101bd61010081565b60405161ffff9091168152602001610144565b6101556101de36600461154c565b610688565b6000546001600160a01b0316610184565b610133610783565b6102035468010000000000000000900463ffffffff16610133565b61022a610225366004611405565b610825565b6040516101449190611567565b61024a6102453660046113dc565b6109d5565b6040519015158152602001610144565b61013361026836600461147a565b610a49565b6001546001600160a01b0316610184565b61017561028c3660046113dc565b610c36565b6000336102a66002546001600160a01b031690565b6001600160a01b031614806102d45750336102c96000546001600160a01b031690565b6001600160a01b0316145b61034b5760405162461bcd60e51b815260206004820152602660248201527f4d616e61676561626c652f63616c6c65722d6e6f742d6d616e616765722d6f7260448201527f2d6f776e6572000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61035482610d72565b90505b919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152604080516060810182526102035463ffffffff80821683526401000000008204811660208401526801000000000000000090910416918101919091526103cc90610f74565b905090565b835b838111610429576040805160a08101825283815263ffffffff808416602083015285169181019190915260146060820152600a608082015261041481610d72565b50508080610421906116cf565b9150506103d3565b5050505050565b6001546001600160a01b0316331461048a5760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e6572006044820152606401610342565b60015461049f906001600160a01b0316610faf565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152604080516060810182526102035463ffffffff8082168352640100000000820481166020840181905268010000000000000000909204169282019290925290600090600390610100811061053f5761053f611722565b6040805160a08101825260029290920292909201805482526001015463ffffffff808216602084015267ffffffffffffffff640100000000830481169484018590526c010000000000000000000000008304166060840152600160a01b909104166080820152915061060d57506040805160a081018252600354815260045463ffffffff808216602084015267ffffffffffffffff64010000000083048116948401949094526c0100000000000000000000000082049093166060830152600160a01b900490911660808201525b92915050565b336106266000546001600160a01b031690565b6001600160a01b03161461067c5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b6106866000610faf565b565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152604080516060810182526102035463ffffffff80821683526401000000008204811660208401526801000000000000000090910416918101919091526003906106fc908461100c565b63ffffffff16610100811061071357610713611722565b6040805160a08101825260029290920292909201805482526001015463ffffffff808216602084015267ffffffffffffffff64010000000083048116948401949094526c0100000000000000000000000082049093166060830152600160a01b9004909116608082015292915050565b604080516060810182526102035463ffffffff8082168084526401000000008304821660208501526801000000000000000090920416928201929092526000916107cf57600091505090565b6020810151600363ffffffff821661010081106107ee576107ee611722565b6002020160010160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1660001461060d575060400151919050565b606060008267ffffffffffffffff81111561084257610842611738565b60405190808252806020026020018201604052801561089b57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816108605790505b50604080516060810182526102035463ffffffff808216835264010000000082048116602084015268010000000000000000909104169181019190915290915060005b848110156109cb576003610918838888858181106108fe576108fe611722565b9050602002016020810190610913919061154c565b61100c565b63ffffffff16610100811061092f5761092f611722565b6040805160a08101825260029290920292909201805482526001015463ffffffff808216602084015267ffffffffffffffff64010000000083048116948401949094526c0100000000000000000000000082049093166060830152600160a01b9004909116608082015283518490839081106109ad576109ad611722565b602002602001018190525080806109c3906116cf565b9150506108de565b5090949350505050565b6000336109ea6000546001600160a01b031690565b6001600160a01b031614610a405760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b6103548261101f565b600033610a5e6000546001600160a01b031690565b6001600160a01b031614610ab45760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b604080516060810182526102035463ffffffff808216835264010000000082048116602080850191909152680100000000000000009092048116938301939093528401519091600091610b0a9184919061110b16565b90508360038263ffffffff166101008110610b2757610b27611722565b82516002919091029190910190815560208083015160019092018054604080860151606087015160809097015163ffffffff9687166bffffffffffffffffffffffff199094169390931764010000000067ffffffffffffffff92831602177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c0100000000000000000000000091909716027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1695909517600160a01b9185169190910217905586015191519116907fc6f337e5507fd1bdebc6d79ed14168145e8c109d7b7139459692e24f06baed1790610c249087906115fd565b60405180910390a25050506020015190565b33610c496000546001600160a01b031690565b6001600160a01b031614610c9f5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610342565b6001600160a01b038116610d1b5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610342565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b604080516060810182526102035463ffffffff8082168352640100000000820481166020840181905268010000000000000000909204169282019290925260009183906003906101008110610dc957610dc9611722565b825160029190910291909101908155602080830151600190920180546040850151606086015160809096015163ffffffff9586166bffffffffffffffffffffffff199093169290921764010000000067ffffffffffffffff92831602177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c0100000000000000000000000091909616027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1694909417600160a01b948416949094029390931790925590840151610ea59183919061123b16565b8051610203805460208085015160409586015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff928216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909516968216969096179390931716939093179091559085015191519116907fc6f337e5507fd1bdebc6d79ed14168145e8c109d7b7139459692e24f06baed1790610f639086906115fd565b60405180910390a250506020015190565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915281516003906106fc90849061110b565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611018838361110b565b9392505050565b6002546000906001600160a01b039081169083168114156110a85760405162461bcd60e51b815260206004820152602360248201527f4d616e61676561626c652f6578697374696e672d6d616e616765722d6164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610342565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385811691821790925560405190918316907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a350600192915050565b600061111683611326565b80156111325750826000015163ffffffff168263ffffffff1611155b61117e5760405162461bcd60e51b815260206004820152600f60248201527f4452422f6675747572652d6472617700000000000000000000000000000000006044820152606401610342565b825160009061118e9084906116aa565b9050836040015163ffffffff168163ffffffff16106111ef5760405162461bcd60e51b815260206004820152601060248201527f4452422f657870697265642d64726177000000000000000000000000000000006044820152606401610342565b600061120f856020015163ffffffff16866040015163ffffffff1661134e565b90506112328163ffffffff168363ffffffff16876040015163ffffffff1661137c565b95945050505050565b604080516060810182526000808252602082018190529181019190915261126183611326565b15806112845750825161127590600161166b565b63ffffffff168263ffffffff16145b6112d05760405162461bcd60e51b815260206004820152601260248201527f4452422f6d7573742d62652d636f6e74696700000000000000000000000000006044820152606401610342565b60405180606001604052808363ffffffff168152602001611305856020015163ffffffff16866040015163ffffffff16611394565b63ffffffff168152602001846040015163ffffffff16815250905092915050565b6000816020015163ffffffff1660001480156113475750815163ffffffff16155b1592915050565b60008161135d5750600061060d565b611018600161136c8486611653565b6113769190611693565b836113a4565b600061138c8361136c8487611653565b949350505050565b6000611018611376846001611653565b600061101882846116ea565b803563ffffffff8116811461035757600080fd5b803567ffffffffffffffff8116811461035757600080fd5b6000602082840312156113ee57600080fd5b81356001600160a01b038116811461101857600080fd5b6000806020838503121561141857600080fd5b823567ffffffffffffffff8082111561143057600080fd5b818501915085601f83011261144457600080fd5b81358181111561145357600080fd5b8660208260051b850101111561146857600080fd5b60209290920196919550909350505050565b600060a0828403121561148c57600080fd5b60405160a0810181811067ffffffffffffffff821117156114bd57634e487b7160e01b600052604160045260246000fd5b604052823581526114d0602084016113b0565b60208201526114e1604084016113c4565b60408201526114f2606084016113c4565b6060820152611503608084016113b0565b60808201529392505050565b6000806000806080858703121561152557600080fd5b843593506020850135925061153c604086016113b0565b9396929550929360600135925050565b60006020828403121561155e57600080fd5b611018826113b0565b6020808252825182820181905260009190848201906040850190845b818110156115f1576115de83855180518252602081015163ffffffff80821660208501526040830151915067ffffffffffffffff80831660408601528060608501511660608601525080608084015116608085015250505050565b9284019260a09290920191600101611583565b50909695505050505050565b60a0810161060d828480518252602081015163ffffffff80821660208501526040830151915067ffffffffffffffff80831660408601528060608501511660608601525080608084015116608085015250505050565b600082198211156116665761166661170c565b500190565b600063ffffffff80831681851680830382111561168a5761168a61170c565b01949350505050565b6000828210156116a5576116a561170c565b500390565b600063ffffffff838116908316818110156116c7576116c761170c565b039392505050565b60006000198214156116e3576116e361170c565b5060010190565b60008261170757634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220d75d4c731c51fc3ca7debb9b3f18a9b97457bbe9d2c233f05a122358e28e981364736f6c63430008060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
