Loading
60806040523480156200001157600080fd5b5060405162002c1c38038062002c1c8339818101604052810190620000379190620002fc565b806040518060400160405280600681526020017f61766172696b00000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f61766b00000000000000000000000000000000000000000000000000000000008152508160009081620000b59190620005a8565b508060019081620000c79190620005a8565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013f5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001369190620006a0565b60405180910390fd5b6200015081620001cc60201b60201c565b5033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180606001604052806036815260200162002be66036913960079081620001bc9190620005a8565b50600160098190555050620006bd565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002c48262000297565b9050919050565b620002d681620002b7565b8114620002e257600080fd5b50565b600081519050620002f681620002cb565b92915050565b60006020828403121562000315576200031462000292565b5b60006200032584828501620002e5565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003b057607f821691505b602082108103620003c657620003c562000368565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003f1565b6200043c8683620003f1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000489620004836200047d8462000454565b6200045e565b62000454565b9050919050565b6000819050919050565b620004a58362000468565b620004bd620004b48262000490565b848454620003fe565b825550505050565b600090565b620004d4620004c5565b620004e18184846200049a565b505050565b5b818110156200050957620004fd600082620004ca565b600181019050620004e7565b5050565b601f82111562000558576200052281620003cc565b6200052d84620003e1565b810160208510156200053d578190505b620005556200054c85620003e1565b830182620004e6565b50505b505050565b600082821c905092915050565b60006200057d600019846008026200055d565b1980831691505092915050565b60006200059883836200056a565b9150826002028217905092915050565b620005b3826200032e565b67ffffffffffffffff811115620005cf57620005ce62000339565b5b620005db825462000397565b620005e88282856200050d565b600060209050601f8311600181146200062057600084156200060b578287015190505b6200061785826200058a565b86555062000687565b601f1984166200063086620003cc565b60005b828110156200065a5784890151825560018201915060208501945060208101905062000633565b868310156200067a578489015162000676601f8916826200056a565b8355505b6001600288020188555050505b505050505050565b6200069a81620002b7565b82525050565b6000602082019050620006b760008301846200068f565b92915050565b61251980620006cd6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a8c90cb211610071578063a8c90cb2146102f2578063b88d4fde1461030e578063c87b56dd1461032a578063e985e9c51461035a578063f2fde38b1461038a57610121565b806370a0823114610260578063715018a6146102905780638da5cb5b1461029a57806395d89b41146102b8578063a22cb465146102d657610121565b806323b872dd116100f457806323b872dd146101c057806340c10f19146101dc57806342842e0e146101f857806355f804b3146102145780636352211e1461023057610121565b806301ffc9a71461012657806306fdde0314610156578063081812fc14610174578063095ea7b3146101a4575b600080fd5b610140600480360381019061013b9190611982565b6103a6565b60405161014d91906119ca565b60405180910390f35b61015e610488565b60405161016b9190611a75565b60405180910390f35b61018e60048036038101906101899190611acd565b61051a565b60405161019b9190611b3b565b60405180910390f35b6101be60048036038101906101b99190611b82565b610536565b005b6101da60048036038101906101d59190611bc2565b61054c565b005b6101f660048036038101906101f19190611b82565b61064e565b005b610212600480360381019061020d9190611bc2565b610674565b005b61022e60048036038101906102299190611c7a565b610694565b005b61024a60048036038101906102459190611acd565b6106b2565b6040516102579190611b3b565b60405180910390f35b61027a60048036038101906102759190611cc7565b6106c4565b6040516102879190611d03565b60405180910390f35b61029861077e565b005b6102a2610792565b6040516102af9190611b3b565b60405180910390f35b6102c06107bc565b6040516102cd9190611a75565b60405180910390f35b6102f060048036038101906102eb9190611d4a565b61084e565b005b61030c60048036038101906103079190611b82565b610864565b005b61032860048036038101906103239190611eba565b6108a5565b005b610344600480360381019061033f9190611acd565b6108c2565b6040516103519190611a75565b60405180910390f35b610374600480360381019061036f9190611f3d565b61092b565b60405161038191906119ca565b60405180910390f35b6103a4600480360381019061039f9190611cc7565b6109bf565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610481575061048082610a45565b5b9050919050565b60606000805461049790611fac565b80601f01602080910402602001604051908101604052809291908181526020018280546104c390611fac565b80156105105780601f106104e557610100808354040283529160200191610510565b820191906000526020600020905b8154815290600101906020018083116104f357829003601f168201915b5050505050905090565b600061052582610aaf565b5061052f82610b37565b9050919050565b6105488282610543610b74565b610b7c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105be5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016105b59190611b3b565b60405180910390fd5b60006105d283836105cd610b74565b610b8e565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610648578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161063f93929190611fdd565b60405180910390fd5b50505050565b6106588282610da8565b6009600081548092919061066b90612043565b91905055505050565b61068f838383604051806020016040528060008152506108a5565b505050565b61069c610dc6565b8181600791826106ad929190612242565b505050565b60006106bd82610aaf565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107375760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161072e9190611b3b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610786610dc6565b6107906000610e4d565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546107cb90611fac565b80601f01602080910402602001604051908101604052809291908181526020018280546107f790611fac565b80156108445780601f1061081957610100808354040283529160200191610844565b820191906000526020600020905b81548152906001019060200180831161082757829003601f168201915b5050505050905090565b610860610859610b74565b8383610f13565b5050565b60005b818110156108a05761087b83600954610da8565b6009600081548092919061088e90612043565b91905055508080600101915050610867565b505050565b6108b084848461054c565b6108bc84848484611082565b50505050565b60606108cd82610aaf565b5060006108d8611239565b905060008151116108f85760405180602001604052806000815250610923565b8061090284611259565b60405160200161091392919061234e565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6109c7610dc6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a395760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610a309190611b3b565b60405180910390fd5b610a4281610e4d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080610abb83611327565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b2e57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610b259190611d03565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610b898383836001611364565b505050565b600080610b9a84611327565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610bdc57610bdb818486611529565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c6d57610c1e600085600080611364565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610cf0576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b610dc28282604051806020016040528060008152506115ed565b5050565b610dce610b74565b73ffffffffffffffffffffffffffffffffffffffff16610dec610792565b73ffffffffffffffffffffffffffffffffffffffff1614610e4b57610e0f610b74565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e429190611b3b565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8457816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610f7b9190611b3b565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161107591906119ca565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611233578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026110c6610b74565b8685856040518563ffffffff1660e01b81526004016110e894939291906123c7565b6020604051808303816000875af192505050801561112457506040513d601f19601f820116820180604052508101906111219190612428565b60015b6111a8573d8060008114611154576040519150601f19603f3d011682016040523d82523d6000602084013e611159565b606091505b5060008151036111a057836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016111979190611b3b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461123157836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016112289190611b3b565b60405180910390fd5b505b50505050565b60606040518060600160405280603681526020016124ae60369139905090565b60606000600161126884611609565b01905060008167ffffffffffffffff81111561128757611286611d8f565b5b6040519080825280601f01601f1916602001820160405280156112b95781602001600182028036833780820191505090505b509050600082602001820190505b60011561131c578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816113105761130f612455565b5b049450600085036112c7575b819350505050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061139d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114d15760006113ad84610aaf565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561141857508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561142b5750611429818461092b565b155b1561146d57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016114649190611b3b565b60405180910390fd5b81156114cf57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61153483838361175c565b6115e857600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a957806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115a09190611d03565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016115df929190612484565b60405180910390fd5b505050565b6115f7838361181d565b6116046000848484611082565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611667577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161165d5761165c612455565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106116a4576d04ee2d6d415b85acef8100000000838161169a57611699612455565b5b0492506020810190505b662386f26fc1000083106116d357662386f26fc1000083816116c9576116c8612455565b5b0492506010810190505b6305f5e10083106116fc576305f5e10083816116f2576116f1612455565b5b0492506008810190505b612710831061172157612710838161171757611716612455565b5b0492506004810190505b60648310611744576064838161173a57611739612455565b5b0492506002810190505b600a8310611753576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561181457508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117d557506117d4848461092b565b5b8061181357508273ffffffffffffffffffffffffffffffffffffffff166117fb83610b37565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188f5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016118869190611b3b565b60405180910390fd5b600061189d83836000610b8e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119115760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016119089190611b3b565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61195f8161192a565b811461196a57600080fd5b50565b60008135905061197c81611956565b92915050565b60006020828403121561199857611997611920565b5b60006119a68482850161196d565b91505092915050565b60008115159050919050565b6119c4816119af565b82525050565b60006020820190506119df60008301846119bb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a1f578082015181840152602081019050611a04565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a47826119e5565b611a5181856119f0565b9350611a61818560208601611a01565b611a6a81611a2b565b840191505092915050565b60006020820190508181036000830152611a8f8184611a3c565b905092915050565b6000819050919050565b611aaa81611a97565b8114611ab557600080fd5b50565b600081359050611ac781611aa1565b92915050565b600060208284031215611ae357611ae2611920565b5b6000611af184828501611ab8565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b2582611afa565b9050919050565b611b3581611b1a565b82525050565b6000602082019050611b506000830184611b2c565b92915050565b611b5f81611b1a565b8114611b6a57600080fd5b50565b600081359050611b7c81611b56565b92915050565b60008060408385031215611b9957611b98611920565b5b6000611ba785828601611b6d565b9250506020611bb885828601611ab8565b9150509250929050565b600080600060608486031215611bdb57611bda611920565b5b6000611be986828701611b6d565b9350506020611bfa86828701611b6d565b9250506040611c0b86828701611ab8565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112611c3a57611c39611c15565b5b8235905067ffffffffffffffff811115611c5757611c56611c1a565b5b602083019150836001820283011115611c7357611c72611c1f565b5b9250929050565b60008060208385031215611c9157611c90611920565b5b600083013567ffffffffffffffff811115611caf57611cae611925565b5b611cbb85828601611c24565b92509250509250929050565b600060208284031215611cdd57611cdc611920565b5b6000611ceb84828501611b6d565b91505092915050565b611cfd81611a97565b82525050565b6000602082019050611d186000830184611cf4565b92915050565b611d27816119af565b8114611d3257600080fd5b50565b600081359050611d4481611d1e565b92915050565b60008060408385031215611d6157611d60611920565b5b6000611d6f85828601611b6d565b9250506020611d8085828601611d35565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dc782611a2b565b810181811067ffffffffffffffff82111715611de657611de5611d8f565b5b80604052505050565b6000611df9611916565b9050611e058282611dbe565b919050565b600067ffffffffffffffff821115611e2557611e24611d8f565b5b611e2e82611a2b565b9050602081019050919050565b82818337600083830152505050565b6000611e5d611e5884611e0a565b611def565b905082815260208101848484011115611e7957611e78611d8a565b5b611e84848285611e3b565b509392505050565b600082601f830112611ea157611ea0611c15565b5b8135611eb1848260208601611e4a565b91505092915050565b60008060008060808587031215611ed457611ed3611920565b5b6000611ee287828801611b6d565b9450506020611ef387828801611b6d565b9350506040611f0487828801611ab8565b925050606085013567ffffffffffffffff811115611f2557611f24611925565b5b611f3187828801611e8c565b91505092959194509250565b60008060408385031215611f5457611f53611920565b5b6000611f6285828601611b6d565b9250506020611f7385828601611b6d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611fc457607f821691505b602082108103611fd757611fd6611f7d565b5b50919050565b6000606082019050611ff26000830186611b2c565b611fff6020830185611cf4565b61200c6040830184611b2c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061204e82611a97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120805761207f612014565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026120f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120bb565b61210286836120bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061213f61213a61213584611a97565b61211a565b611a97565b9050919050565b6000819050919050565b61215983612124565b61216d61216582612146565b8484546120c8565b825550505050565b600090565b612182612175565b61218d818484612150565b505050565b5b818110156121b1576121a660008261217a565b600181019050612193565b5050565b601f8211156121f6576121c781612096565b6121d0846120ab565b810160208510156121df578190505b6121f36121eb856120ab565b830182612192565b50505b505050565b600082821c905092915050565b6000612219600019846008026121fb565b1980831691505092915050565b60006122328383612208565b9150826002028217905092915050565b61224c838361208b565b67ffffffffffffffff81111561226557612264611d8f565b5b61226f8254611fac565b61227a8282856121b5565b6000601f8311600181146122a95760008415612297578287013590505b6122a18582612226565b865550612309565b601f1984166122b786612096565b60005b828110156122df578489013582556001820191506020850194506020810190506122ba565b868310156122fc57848901356122f8601f891682612208565b8355505b6001600288020188555050505b50505050505050565b600081905092915050565b6000612328826119e5565b6123328185612312565b9350612342818560208601611a01565b80840191505092915050565b600061235a828561231d565b9150612366828461231d565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b600061239982612372565b6123a3818561237d565b93506123b3818560208601611a01565b6123bc81611a2b565b840191505092915050565b60006080820190506123dc6000830187611b2c565b6123e96020830186611b2c565b6123f66040830185611cf4565b8181036060830152612408818461238e565b905095945050505050565b60008151905061242281611956565b92915050565b60006020828403121561243e5761243d611920565b5b600061244c84828501612413565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006040820190506124996000830185611b2c565b6124a66020830184611cf4565b939250505056fe697066733a2f2f516d59734679764e555a7a7452637a6f5a534d466b4151634b4c3135727046656d4839586454394a686b767957642fa2646970667358221220bff51cbbe51f068f68f3823a4d35164ef66f59fed1ce69a0a8e3a18c79dadfce64736f6c63430008180033697066733a2f2f516d59734679764e555a7a7452637a6f5a534d466b4151634b4c3135727046656d4839586454394a686b767957642f0000000000000000000000009b09a90177b898a9a257ec40641017cbd3342cec