{
    "contractName": "SharedLoan",
    "abi": [
        {
            "constant": true,
            "inputs": [],
            "name": "DYDX_MARGIN",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "owedTokenWithdrawnEarly",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "balances",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "INITIAL_LENDER",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "totalPrincipal",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "totalOwedTokenWithdrawn",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "totalPrincipalFullyWithdrawn",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "TRUSTED_MARGIN_CALLERS",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "state",
            "outputs": [
                {
                    "name": "",
                    "type": "uint8"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "owedToken",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "POSITION_ID",
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "heldToken",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "margin",
                    "type": "address"
                },
                {
                    "name": "initialLender",
                    "type": "address"
                },
                {
                    "name": "trustedMarginCallers",
                    "type": "address[]"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "name": "initialAmount",
                    "type": "uint256"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "who",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "BalanceAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "who",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "owedTokenAmount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "heldTokenAmount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "completelyRepaid",
                    "type": "bool"
                }
            ],
            "name": "TokensWithdrawn",
            "type": "event"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                }
            ],
            "name": "receiveLoanOwnership",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "payer",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "principalAdded",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "increaseLoanOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "caller",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "marginCallOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "canceler",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                }
            ],
            "name": "cancelMarginCallOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "recipient",
                    "type": "address"
                }
            ],
            "name": "forceRecoverCollateralOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "who",
                    "type": "address[]"
                }
            ],
            "name": "withdrawMultiple",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "who",
                    "type": "address"
                }
            ],
            "name": "withdraw",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x6080604052600160005534801561001557600080fd5b506040516123b03803806123b08339810160409081528151602083015191830151606084015160018054600160a060020a03808716600160a060020a03199283161790925560038590556005805460ff191690556002805492851692909116919091179055919390910160005b81518110156100d957600160046000848481518110151561009f57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101610082565b50505050506122c3806100ed6000396000f3006080604052600436106101065763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630dda60cc811461010b578063271304e71461014957806327e235e3146101895780632895e837146101b757806332f2bd3c146101d95780634120bcec146101ee5780634b1533b214610226578063501b0b181461023b57806351cff8d91461026c5780635451fb26146102b35780637a171396146102ea57806383253cfa146102ff578063a1744a3314610330578063a753b1a814610345578063abdd0c4414610387578063c19d93fb146103bb578063d07d5388146103f4578063d7ac71ff14610409578063dd56898c1461041e575b600080fd5b34801561011757600080fd5b50610120610433565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561015557600080fd5b5061017773ffffffffffffffffffffffffffffffffffffffff6004351661044f565b60408051918252519081900360200190f35b34801561019557600080fd5b5061017773ffffffffffffffffffffffffffffffffffffffff60043516610461565b3480156101c357600080fd5b506101d76004803560248101910135610473565b005b3480156101e557600080fd5b50610120610609565b3480156101fa57600080fd5b5061012073ffffffffffffffffffffffffffffffffffffffff6004358116906024359060443516610625565b34801561023257600080fd5b50610177610995565b34801561024757600080fd5b5061012073ffffffffffffffffffffffffffffffffffffffff6004351660243561099b565b34801561027857600080fd5b5061029a73ffffffffffffffffffffffffffffffffffffffff60043516610da8565b6040805192835260208301919091528051918290030190f35b3480156102bf57600080fd5b5061012073ffffffffffffffffffffffffffffffffffffffff60043516602435604435606435610f01565b3480156102f657600080fd5b50610177611235565b34801561030b57600080fd5b5061012073ffffffffffffffffffffffffffffffffffffffff6004351660243561123b565b34801561033c57600080fd5b50610177611591565b34801561035157600080fd5b5061037373ffffffffffffffffffffffffffffffffffffffff60043516611597565b604080519115158252519081900360200190f35b34801561039357600080fd5b5061012073ffffffffffffffffffffffffffffffffffffffff600435166024356044356115ac565b3480156103c757600080fd5b506103d06118d5565b604051808260028111156103e057fe5b60ff16815260200191505060405180910390f35b34801561040057600080fd5b506101206118de565b34801561041557600080fd5b506101776118ff565b34801561042a57600080fd5b50610120611905565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020526000908152604090205481565b600a6020526000908152604090205481565b6000805460019081018083559060055460ff16600281111561049157fe5b14806104ad5750600260055460ff1660028111156104ab57fe5b145b151561054057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5368617265644c6f616e2377697468647261774d756c7469706c653a20496e7660448201527f616c696420737461746500000000000000000000000000000000000000000000606482015290519081900360840190fd5b610548611921565b600091505b828210156105935761058684848481811061056457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16611a0d565b505060019091019061054d565b600054811461060357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015460009073ffffffffffffffffffffffffffffffffffffffff1633146106d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080546001908101918290558060055460ff1660028111156106f357fe5b1461078557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5368617265644c6f616e236f6e6c7953746174653a20496e636f72726563742060448201527f5374617465000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003548590811461081d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5368617265644c6f616e236f6e6c79506f736974696f6e3a20496e636f72726560448201527f637420706f736974696f6e000000000000000000000000000000000000000000606482015290519081900360840190fd5b73ffffffffffffffffffffffffffffffffffffffff851630146108ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f5368617265644c6f616e23666f7263655265636f766572436f6c6c617465726160448201527f6c4f6e426568616c664f663a20496e76616c696420636f6c6c61746572616c2060648201527f726563697069656e740000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b5050600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055600054309250811461098d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b509392505050565b60075481565b60006109a56121da565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a5157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600101808255908060055460ff166002811115610a6e57fe5b14610b0057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5368617265644c6f616e236f6e6c7953746174653a20496e636f72726563742060448201527f5374617465000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60035485908114610b9857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5368617265644c6f616e236f6e6c79506f736974696f6e3a20496e636f72726560448201527f637420706f736974696f6e000000000000000000000000000000000000000000606482015290519081900360840190fd5b600154600354610bbe9173ffffffffffffffffffffffffffffffffffffffff1690611b2e565b935060008460800151111515610bd057fe5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155608085018051600781905560025473ffffffffffffffffffffffffffffffffffffffff9081166000908152600a60209081526040918290209390935588518554908316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909116179094558188015160068054919092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055600354915183519283529082015281517fc885ca8035bb269b79b1906eb7aaeeec6a4713b0976b175c25aa84b49acfa473929181900390910190a16002546080850151604080519182525173ffffffffffffffffffffffffffffffffffffffff909216917fe96dd7a15a3974e8e7d5eb80de2cb6fd69907a1ee089170cd976cfffaedfa8ac9181900360200190a230945050506000548114610da057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b505092915050565b600080546001908101808355829160055460ff166002811115610dc757fe5b1480610de35750600260055460ff166002811115610de157fe5b145b1515610e7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f5368617265644c6f616e2377697468647261773a20496e76616c69642073746160448201527f7465000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610e7e611921565b610e8784611a0d565b925092506000548114610efb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50915091565b60015460009073ffffffffffffffffffffffffffffffffffffffff163314610fb057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080546001908101918290558060055460ff166002811115610fcf57fe5b1461106157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5368617265644c6f616e236f6e6c7953746174653a20496e636f72726563742060448201527f5374617465000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354869081146110f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5368617265644c6f616e236f6e6c79506f736974696f6e3a20496e636f72726560448201527f637420706f736974696f6e000000000000000000000000000000000000000000606482015290519081900360840190fd5b73ffffffffffffffffffffffffffffffffffffffff88166000908152600a602052604090205461112f908763ffffffff611cce16565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600a6020526040902055600754611168908763ffffffff611cce16565b60075560408051878152905173ffffffffffffffffffffffffffffffffffffffff8a16917fe96dd7a15a3974e8e7d5eb80de2cb6fd69907a1ee089170cd976cfffaedfa8ac919081900360200190a23093505050600054811461122c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50949350505050565b60095481565b60015460009073ffffffffffffffffffffffffffffffffffffffff1633146112ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080546001908101918290558060055460ff16600281111561130957fe5b1461139b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5368617265644c6f616e236f6e6c7953746174653a20496e636f72726563742060448201527f5374617465000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003548490811461143357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5368617265644c6f616e236f6e6c79506f736974696f6e3a20496e636f72726560448201527f637420706f736974696f6e000000000000000000000000000000000000000000606482015290519081900360840190fd5b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090205460ff16151561151557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f5368617265644c6f616e236d617267696e43616c6c4f6e426568616c664f663a60448201527f206d617267696e2063616c6c2063616e63656c6572206d75737420626520747260648201527f7573746564000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b3093505050600054811461158a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b5092915050565b60085481565b60046020526000908152604090205460ff1681565b60015460009073ffffffffffffffffffffffffffffffffffffffff16331461165b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080546001908101918290558060055460ff16600281111561167a57fe5b1461170c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5368617265644c6f616e236f6e6c7953746174653a20496e636f72726563742060448201527f5374617465000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354859081146117a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5368617265644c6f616e236f6e6c79506f736974696f6e3a20496e636f72726560448201527f637420706f736974696f6e000000000000000000000000000000000000000000606482015290519081900360840190fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526004602052604090205460ff16151561186057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5368617265644c6f616e236d617267696e43616c6c4f6e426568616c664f663a60448201527f206d617267696e2063616c6c6572206d75737420626520747275737465640000606482015290519081900360840190fd5b3093505050600054811461098d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b60055460ff1681565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b600260055460ff16600281111561193457fe5b14611a0b57600154600354604080517f640075f300000000000000000000000000000000000000000000000000000000815260048101929092525173ffffffffffffffffffffffffffffffffffffffff9092169163640075f391602480820192602092909190829003018186803b1580156119ae57600080fd5b505afa1580156119c2573d6000803e3d6000fd5b505050506040513d60208110156119d857600080fd5b505115611a0b57600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790555b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a60205260408120548190818080831515611a4b5760009550859450611b25565b611a558785611ce1565b925060009150819050600260055460ff166002811115611a7157fe5b1415611ac457611a818785611e42565b600854909250611a97908563ffffffff611cce16565b6008555073ffffffffffffffffffffffffffffffffffffffff86166000908152600a602052604081205560015b604080518481526020810184905282151581830152905173ffffffffffffffffffffffffffffffffffffffff8916917fcfdbaab5a2338aefa6129a49996c42a2847d3bb11a9fff051862dbcf281a7a15919081900360600190a28282955095505b50505050915091565b611b366121da565b611b3e61223e565b611b4661225d565b611b4e612278565b604080517f1928b3cb00000000000000000000000000000000000000000000000000000000815260048101879052905173ffffffffffffffffffffffffffffffffffffffff881691631928b3cb91602480830192610180929190829003018186803b158015611bbc57600080fd5b505afa158015611bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610180811015611bf657600080fd5b506040805161018081018252825173ffffffffffffffffffffffffffffffffffffffff90811682526020808501518216908301528383015181169282019290925260608084015190921691810191909152608080830180519183019190915260a0808401519083015260c0808401805163ffffffff9081169285019290925260e080860151831690850152610100808601518316908501526101208086015183169085015261014080860151831690850152610160808601519092169184019190915291965091945090925090505b50505092915050565b81810182811015611cdb57fe5b92915050565b600080600080611d13600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630611ecd565b9250611d2a60095484611cce90919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b6020526040902054600754919350611d7291611d6690889086611f9b565b9063ffffffff611fbd16565b9050801515611d845760009350611cc5565b600954611d97908263ffffffff611cce16565b600955600160055460ff166002811115611dad57fe5b1415611e105773ffffffffffffffffffffffffffffffffffffffff86166000908152600b6020526040902054611de9908263ffffffff611cce16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b60205260409020555b600554611e3990610100900473ffffffffffffffffffffffffffffffffffffffff168783611fcf565b95945050505050565b60065460009081908190611e6c9073ffffffffffffffffffffffffffffffffffffffff1630611ecd565b9150611e8f84611e89600854600754611fbd90919063ffffffff16565b84611f9b565b9050801515611ea15760009250610da0565b600654611ec59073ffffffffffffffffffffffffffffffffffffffff168683611fcf565b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f6857600080fd5b505afa158015611f7c573d6000803e3d6000fd5b505050506040513d6020811015611f9257600080fd5b50519392505050565b6000611ec583611fb1868563ffffffff61216816565b9063ffffffff61219116565b600082821115611fc957fe5b50900390565b3081158061200857508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561201257610603565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156120b557600080fd5b505af11580156120c9573d6000803e3d6000fd5b505050506120d56121a6565b151561060357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e496e746572616374237472616e736665723a205472616e7366657260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082151561217957506000611cdb565b5081810281838281151561218957fe5b0414611cdb57fe5b6000818381151561219e57fe5b049392505050565b6000803d80156121bd57602081146121c6576121d2565b600191506121d2565b60206000803e60005191505b501515919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b6080604051908101604052806004906020820280388339509192915050565b60408051808201825290600290829080388339509192915050565b60c06040519081016040528060069060208202803883395091929150505600a165627a7a723058209169625fecee92ec87bdf99a4a967d848cfa0a8893ebfdc77618e047668d12e60029",
    "networks": {},
    "schemaVersion": "2.0.1"
}