60806040523480156200001157600080fd5b506040516200279c3803806200279c833981810160405281019062000037919062000288565b806040518060400160405280600b81526020017f426c6f6f6d4170653732310000000000000000000000000000000000000000008152506040518060400160405280600681526020017f41504537323100000000000000000000000000000000000000000000000000008152508160009081620000b5919062000534565b508060019081620000c7919062000534565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013f5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200013691906200062c565b60405180910390fd5b62000150816200015860201b60201c565b505062000649565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002508262000223565b9050919050565b620002628162000243565b81146200026e57600080fd5b50565b600081519050620002828162000257565b92915050565b600060208284031215620002a157620002a06200021e565b5b6000620002b18482850162000271565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033c57607f821691505b602082108103620003525762000351620002f4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200037d565b620003c886836200037d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004156200040f6200040984620003e0565b620003ea565b620003e0565b9050919050565b6000819050919050565b6200043183620003f4565b6200044962000440826200041c565b8484546200038a565b825550505050565b600090565b6200046062000451565b6200046d81848462000426565b505050565b5b8181101562000495576200048960008262000456565b60018101905062000473565b5050565b601f821115620004e457620004ae8162000358565b620004b9846200036d565b81016020851015620004c9578190505b620004e1620004d8856200036d565b83018262000472565b50505b505050565b600082821c905092915050565b60006200050960001984600802620004e9565b1980831691505092915050565b6000620005248383620004f6565b9150826002028217905092915050565b6200053f82620002ba565b67ffffffffffffffff8111156200055b576200055a620002c5565b5b62000567825462000323565b6200057482828562000499565b600060209050601f831160018114620005ac576000841562000597578287015190505b620005a3858262000516565b86555062000613565b601f198416620005bc8662000358565b60005b82811015620005e657848901518255600182019150602085019450602081019050620005bf565b8683101562000606578489015162000602601f891682620004f6565b8355505b6001600288020188555050505b505050505050565b620006268162000243565b82525050565b60006020820190506200064360008301846200061b565b92915050565b61214380620006596000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb465146102a4578063b88d4fde146102c0578063c87b56dd146102dc578063e985e9c51461030c578063f2fde38b1461033c5761010b565b806370a082311461022e578063715018a61461025e5780638da5cb5b1461026857806395d89b41146102865761010b565b806323b872dd116100de57806323b872dd146101aa57806340d097c3146101c657806342842e0e146101e25780636352211e146101fe5761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a600480360381019061012591906118e0565b610358565b6040516101379190611928565b60405180910390f35b61014861043a565b60405161015591906119d3565b60405180910390f35b61017860048036038101906101739190611a2b565b6104cc565b6040516101859190611a99565b60405180910390f35b6101a860048036038101906101a39190611ae0565b6104e8565b005b6101c460048036038101906101bf9190611b20565b6104fe565b005b6101e060048036038101906101db9190611b73565b610600565b005b6101fc60048036038101906101f79190611b20565b610631565b005b61021860048036038101906102139190611a2b565b610651565b6040516102259190611a99565b60405180910390f35b61024860048036038101906102439190611b73565b610663565b6040516102559190611baf565b60405180910390f35b61026661071d565b005b610270610731565b60405161027d9190611a99565b60405180910390f35b61028e61075b565b60405161029b91906119d3565b60405180910390f35b6102be60048036038101906102b99190611bf6565b6107ed565b005b6102da60048036038101906102d59190611d6b565b610803565b005b6102f660048036038101906102f19190611a2b565b610820565b60405161030391906119d3565b60405180910390f35b61032660048036038101906103219190611dee565b610889565b6040516103339190611928565b60405180910390f35b61035660048036038101906103519190611b73565b61091d565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061042357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104335750610432826109a3565b5b9050919050565b60606000805461044990611e5d565b80601f016020809104026020016040519081016040528092919081815260200182805461047590611e5d565b80156104c25780601f10610497576101008083540402835291602001916104c2565b820191906000526020600020905b8154815290600101906020018083116104a557829003601f168201915b5050505050905090565b60006104d782610a0d565b506104e182610a95565b9050919050565b6104fa82826104f5610ad2565b610ada565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105705760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016105679190611a99565b60405180910390fd5b6000610584838361057f610ad2565b610aec565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105fa578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016105f193929190611e8e565b60405180910390fd5b50505050565b610608610d06565b60006007600081548092919061061d90611ef4565b91905055905061062d8282610d8d565b5050565b61064c83838360405180602001604052806000815250610803565b505050565b600061065c82610a0d565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106d65760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106cd9190611a99565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610725610d06565b61072f6000610dab565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461076a90611e5d565b80601f016020809104026020016040519081016040528092919081815260200182805461079690611e5d565b80156107e35780601f106107b8576101008083540402835291602001916107e3565b820191906000526020600020905b8154815290600101906020018083116107c657829003601f168201915b5050505050905090565b6107ff6107f8610ad2565b8383610e71565b5050565b61080e8484846104fe565b61081a84848484610fe0565b50505050565b606061082b82610a0d565b506000610836611197565b905060008151116108565760405180602001604052806000815250610881565b80610860846111b7565b604051602001610871929190611f78565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610925610d06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109975760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161098e9190611a99565b60405180910390fd5b6109a081610dab565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080610a1983611285565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a8c57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610a839190611baf565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610ae783838360016112c2565b505050565b600080610af884611285565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b3a57610b39818486611487565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bcb57610b7c6000856000806112c2565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610c4e576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b610d0e610ad2565b73ffffffffffffffffffffffffffffffffffffffff16610d2c610731565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b57610d4f610ad2565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d829190611a99565b60405180910390fd5b565b610da782826040518060200160405280600081525061154b565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ee257816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610ed99190611a99565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610fd39190611928565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611191578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611024610ad2565b8685856040518563ffffffff1660e01b81526004016110469493929190611ff1565b6020604051808303816000875af192505050801561108257506040513d601f19601f8201168201806040525081019061107f9190612052565b60015b611106573d80600081146110b2576040519150601f19603f3d011682016040523d82523d6000602084013e6110b7565b606091505b5060008151036110fe57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110f59190611a99565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461118f57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016111869190611a99565b60405180910390fd5b505b50505050565b60606040518060600160405280603681526020016120d860369139905090565b6060600060016111c684611567565b01905060008167ffffffffffffffff8111156111e5576111e4611c40565b5b6040519080825280601f01601f1916602001820160405280156112175781602001600182028036833780820191505090505b509050600082602001820190505b60011561127a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161126e5761126d61207f565b5b04945060008503611225575b819350505050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806112fb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561142f57600061130b84610a0d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561137657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561138957506113878184610889565b155b156113cb57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016113c29190611a99565b60405180910390fd5b811561142d57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6114928383836116ba565b61154657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361150757806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016114fe9190611baf565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161153d9291906120ae565b60405180910390fd5b505050565b611555838361177b565b6115626000848484610fe0565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106115c5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816115bb576115ba61207f565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611602576d04ee2d6d415b85acef810000000083816115f8576115f761207f565b5b0492506020810190505b662386f26fc10000831061163157662386f26fc1000083816116275761162661207f565b5b0492506010810190505b6305f5e100831061165a576305f5e10083816116505761164f61207f565b5b0492506008810190505b612710831061167f5761271083816116755761167461207f565b5b0492506004810190505b606483106116a257606483816116985761169761207f565b5b0492506002810190505b600a83106116b1576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561177257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061173357506117328484610889565b5b8061177157508273ffffffffffffffffffffffffffffffffffffffff1661175983610a95565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ed5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016117e49190611a99565b60405180910390fd5b60006117fb83836000610aec565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461186f5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016118669190611a99565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118bd81611888565b81146118c857600080fd5b50565b6000813590506118da816118b4565b92915050565b6000602082840312156118f6576118f561187e565b5b6000611904848285016118cb565b91505092915050565b60008115159050919050565b6119228161190d565b82525050565b600060208201905061193d6000830184611919565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561197d578082015181840152602081019050611962565b60008484015250505050565b6000601f19601f8301169050919050565b60006119a582611943565b6119af818561194e565b93506119bf81856020860161195f565b6119c881611989565b840191505092915050565b600060208201905081810360008301526119ed818461199a565b905092915050565b6000819050919050565b611a08816119f5565b8114611a1357600080fd5b50565b600081359050611a25816119ff565b92915050565b600060208284031215611a4157611a4061187e565b5b6000611a4f84828501611a16565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a8382611a58565b9050919050565b611a9381611a78565b82525050565b6000602082019050611aae6000830184611a8a565b92915050565b611abd81611a78565b8114611ac857600080fd5b50565b600081359050611ada81611ab4565b92915050565b60008060408385031215611af757611af661187e565b5b6000611b0585828601611acb565b9250506020611b1685828601611a16565b9150509250929050565b600080600060608486031215611b3957611b3861187e565b5b6000611b4786828701611acb565b9350506020611b5886828701611acb565b9250506040611b6986828701611a16565b9150509250925092565b600060208284031215611b8957611b8861187e565b5b6000611b9784828501611acb565b91505092915050565b611ba9816119f5565b82525050565b6000602082019050611bc46000830184611ba0565b92915050565b611bd38161190d565b8114611bde57600080fd5b50565b600081359050611bf081611bca565b92915050565b60008060408385031215611c0d57611c0c61187e565b5b6000611c1b85828601611acb565b9250506020611c2c85828601611be1565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611c7882611989565b810181811067ffffffffffffffff82111715611c9757611c96611c40565b5b80604052505050565b6000611caa611874565b9050611cb68282611c6f565b919050565b600067ffffffffffffffff821115611cd657611cd5611c40565b5b611cdf82611989565b9050602081019050919050565b82818337600083830152505050565b6000611d0e611d0984611cbb565b611ca0565b905082815260208101848484011115611d2a57611d29611c3b565b5b611d35848285611cec565b509392505050565b600082601f830112611d5257611d51611c36565b5b8135611d62848260208601611cfb565b91505092915050565b60008060008060808587031215611d8557611d8461187e565b5b6000611d9387828801611acb565b9450506020611da487828801611acb565b9350506040611db587828801611a16565b925050606085013567ffffffffffffffff811115611dd657611dd5611883565b5b611de287828801611d3d565b91505092959194509250565b60008060408385031215611e0557611e0461187e565b5b6000611e1385828601611acb565b9250506020611e2485828601611acb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e7557607f821691505b602082108103611e8857611e87611e2e565b5b50919050565b6000606082019050611ea36000830186611a8a565b611eb06020830185611ba0565b611ebd6040830184611a8a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611eff826119f5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f3157611f30611ec5565b5b600182019050919050565b600081905092915050565b6000611f5282611943565b611f5c8185611f3c565b9350611f6c81856020860161195f565b80840191505092915050565b6000611f848285611f47565b9150611f908284611f47565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000611fc382611f9c565b611fcd8185611fa7565b9350611fdd81856020860161195f565b611fe681611989565b840191505092915050565b60006080820190506120066000830187611a8a565b6120136020830186611a8a565b6120206040830185611ba0565b81810360608301526120328184611fb8565b905095945050505050565b60008151905061204c816118b4565b92915050565b6000602082840312156120685761206761187e565b5b60006120768482850161203d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006040820190506120c36000830185611a8a565b6120d06020830184611ba0565b939250505056fe697066733a2f2f516d65536a53696e4870506e6d586d73704d6a776958794e367a533445397a63636172694752336a7863615774712fa26469706673582212203a94c337f51b39052ff783b3ff597a732a06d7c018e3180deec32258cfc2b65c64736f6c634300081800330000000000000000000000001d59bd5c9cc2010b73ae7cdc8e26776a04a351a3