@pendle/core-v2 5.2.0-beta-2 → 5.2.0-beta-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.dbg.json +1 -1
  2. package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.json +14 -8
  3. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +4 -0
  4. package/build/artifacts/contracts/oracles/{PendleLpOracleLib.sol → PtYtLpOracle/PendleLpOracleLib.sol}/PendleLpOracleLib.json +3 -3
  5. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +4 -0
  6. package/build/artifacts/contracts/oracles/{PendlePYLpOracle.sol → PtYtLpOracle/PendlePYLpOracle.sol}/PendlePYLpOracle.json +3 -3
  7. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +4 -0
  8. package/build/artifacts/contracts/oracles/{PendlePYOracleLib.sol → PtYtLpOracle/PendlePYOracleLib.sol}/PendlePYOracleLib.json +3 -3
  9. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.dbg.json +4 -0
  10. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.json +274 -0
  11. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleBase.sol/PendleChainlinkOracleBase.dbg.json +4 -0
  12. package/build/artifacts/contracts/oracles/{factory → PtYtLpOracle/chainlink}/PendleChainlinkOracleBase.sol/PendleChainlinkOracleBase.json +1 -1
  13. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.dbg.json +4 -0
  14. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.json +316 -0
  15. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.dbg.json +4 -0
  16. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.json +336 -0
  17. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +4 -0
  18. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpGlpOracle.sol/BoringLpGlpOracle.json +3 -3
  19. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +4 -0
  20. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpSeller.sol/BoringLpSeller.json +1 -1
  21. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +4 -0
  22. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.json +3 -3
  23. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +4 -0
  24. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.json +3 -3
  25. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +4 -0
  26. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPtSeller.sol/BoringPtSeller.json +1 -1
  27. package/build/artifacts/contracts/oracles/internal/PendleBoringOneracle.sol/PendleBoringOneracle.dbg.json +4 -0
  28. package/build/artifacts/contracts/oracles/{PendleBoringOneracle.sol → internal/PendleBoringOneracle.sol}/PendleBoringOneracle.json +3 -3
  29. package/build/artifacts/contracts/oracles/internal/PendleBoringSolvBTCOneracle.sol/PendleBoringSolvBTCOneracle.dbg.json +4 -0
  30. package/build/artifacts/contracts/oracles/{PendleBoringSolvBTCOneracle.sol → internal/PendleBoringSolvBTCOneracle.sol}/PendleBoringSolvBTCOneracle.json +3 -3
  31. package/build/artifacts/contracts/oracles/internal/PendleRedStoneRateOracleAdapter.sol/PendleRedStoneRateOracleAdapter.dbg.json +4 -0
  32. package/build/artifacts/contracts/oracles/{PendleRedStoneRateOracleAdapter.sol → internal/PendleRedStoneRateOracleAdapter.sol}/PendleRedStoneRateOracleAdapter.json +3 -3
  33. package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PTExpiry.dbg.json +4 -0
  34. package/build/artifacts/contracts/oracles/{PendleSparkLinearDiscountOracle.sol → internal/PendleSparkLinearDiscountOracle.sol}/PTExpiry.json +1 -1
  35. package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PendleSparkLinearDiscountOracle.dbg.json +4 -0
  36. package/build/artifacts/contracts/oracles/{PendleSparkLinearDiscountOracle.sol → internal/PendleSparkLinearDiscountOracle.sol}/PendleSparkLinearDiscountOracle.json +3 -3
  37. package/contracts/interfaces/IPChainlinkOracleFactory.sol +8 -7
  38. package/contracts/oracles/{PendlePYLpOracle.sol → PtYtLpOracle/PendlePYLpOracle.sol} +2 -2
  39. package/contracts/oracles/{PendlePYOracleLib.sol → PtYtLpOracle/PendlePYOracleLib.sol} +2 -2
  40. package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol +40 -0
  41. package/contracts/oracles/{factory → PtYtLpOracle/chainlink}/PendleChainlinkOracleBase.sol +7 -16
  42. package/contracts/oracles/{factory → PtYtLpOracle/chainlink}/PendleChainlinkOracleFactory.sol +17 -10
  43. package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol +76 -0
  44. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpGlpOracle.sol +3 -3
  45. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpSeller.sol +1 -1
  46. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkAssetOracle.sol +3 -3
  47. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkSYOracle.sol +3 -3
  48. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPtSeller.sol +1 -1
  49. package/contracts/oracles/{PendleBoringOneracle.sol → internal/PendleBoringOneracle.sol} +2 -2
  50. package/contracts/oracles/{PendleBoringSolvBTCOneracle.sol → internal/PendleBoringSolvBTCOneracle.sol} +2 -2
  51. package/contracts/oracles/{PendleRedStoneRateOracleAdapter.sol → internal/PendleRedStoneRateOracleAdapter.sol} +3 -3
  52. package/package.json +1 -1
  53. package/typechain-types/IPChainlinkOracleFactory.ts +22 -19
  54. package/typechain-types/PendleChainlinkOracleFactory.ts +45 -32
  55. package/typechain-types/PendleChainlinkOracleWithQuote.ts +57 -16
  56. package/typechain-types/factories/BoringLpGlpOracle__factory.ts +1 -1
  57. package/typechain-types/factories/BoringPYUsdChainlinkAssetOracle__factory.ts +1 -1
  58. package/typechain-types/factories/BoringPYUsdChainlinkSYOracle__factory.ts +1 -1
  59. package/typechain-types/factories/IPChainlinkOracleFactory__factory.ts +14 -8
  60. package/typechain-types/factories/PendleBoringOneracle__factory.ts +1 -1
  61. package/typechain-types/factories/PendleBoringSolvBTCOneracle__factory.ts +1 -1
  62. package/typechain-types/factories/PendleChainlinkOracleFactory__factory.ts +27 -11
  63. package/typechain-types/factories/PendleChainlinkOracleWithQuote__factory.ts +43 -8
  64. package/typechain-types/factories/PendleChainlinkOracle__factory.ts +1 -1
  65. package/typechain-types/factories/PendlePYLpOracle__factory.ts +1 -1
  66. package/typechain-types/factories/PendleRedStoneRateOracleAdapter__factory.ts +1 -1
  67. package/typechain-types/factories/PendleSparkLinearDiscountOracle__factory.ts +1 -1
  68. package/typechain-types/hardhat.d.ts +117 -0
  69. package/typechain-types/index.ts +2 -2
  70. package/build/artifacts/contracts/oracles/PendleBoringOneracle.sol/PendleBoringOneracle.dbg.json +0 -4
  71. package/build/artifacts/contracts/oracles/PendleBoringSolvBTCOneracle.sol/PendleBoringSolvBTCOneracle.dbg.json +0 -4
  72. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +0 -4
  73. package/build/artifacts/contracts/oracles/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +0 -4
  74. package/build/artifacts/contracts/oracles/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +0 -4
  75. package/build/artifacts/contracts/oracles/PendleRedStoneRateOracleAdapter.sol/PendleRedStoneRateOracleAdapter.dbg.json +0 -4
  76. package/build/artifacts/contracts/oracles/PendleSparkLinearDiscountOracle.sol/PTExpiry.dbg.json +0 -4
  77. package/build/artifacts/contracts/oracles/PendleSparkLinearDiscountOracle.sol/PendleSparkLinearDiscountOracle.dbg.json +0 -4
  78. package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracle.sol/PendleChainlinkOracle.dbg.json +0 -4
  79. package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracle.sol/PendleChainlinkOracle.json +0 -274
  80. package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleBase.sol/PendleChainlinkOracleBase.dbg.json +0 -4
  81. package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.dbg.json +0 -4
  82. package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.json +0 -300
  83. package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.dbg.json +0 -4
  84. package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.json +0 -305
  85. package/build/artifacts/contracts/oracles/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +0 -4
  86. package/build/artifacts/contracts/oracles/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +0 -4
  87. package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +0 -4
  88. package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +0 -4
  89. package/build/artifacts/contracts/oracles/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +0 -4
  90. package/contracts/oracles/factory/PendleChainlinkOracle.sol +0 -21
  91. package/contracts/oracles/factory/PendleChainlinkOracleWithQuote.sol +0 -46
  92. /package/contracts/oracles/{PendleLpOracleLib.sol → PtYtLpOracle/PendleLpOracleLib.sol} +0 -0
  93. /package/contracts/oracles/{PendleSparkLinearDiscountOracle.sol → internal/PendleSparkLinearDiscountOracle.sol} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "BoringPYUsdChainlinkAssetOracle",
4
- "sourceName": "contracts/oracles/samples/BoringPYUsdChainlinkAssetOracle.sol",
4
+ "sourceName": "contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkAssetOracle.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -176,8 +176,8 @@
176
176
  "type": "function"
177
177
  }
178
178
  ],
179
- "bytecode": "0x6101206040523480156200001257600080fd5b50604051620016fe380380620016fe8339810160408190526200003591620000f0565b63ffffffff84166080526001600160a01b0380841660a052821660c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000157565b60ff1660e0526001600160a01b0316610100525062000183915050565b80516001600160a01b0381168114620000eb57600080fd5b919050565b600080600080608085870312156200010757600080fd5b845163ffffffff811681146200011c57600080fd5b93506200012c60208601620000d3565b92506200013c60408601620000d3565b91506200014c60608601620000d3565b905092959194509250565b6000602082840312156200016a57600080fd5b815160ff811681146200017c57600080fd5b9392505050565b60805160a05160c05160e051610100516114ba620002446000396000818161015d0152818161025f01528181610387015261041a01526000818161018c0152818161063f0152818161066d01526106b001526000818160f701526105b9015260008181610136015281816101e20152818161028e0152818161033c015281816103b6015261044901526000818160b301528181610204015281816102af0152818161035e015281816103d70152818161046a015261053001526114ba6000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105b4565b9050670de0b6b3a7640000610249838361104b565b6102539190611078565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb0856fe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110ab565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106f1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108c565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d9565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b600080600061057085610720565b9150915080821061058e576105858585610950565b925050506105ae565b808261059a8787610950565b6105a4919061104b565b6105859190611078565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063991906110ab565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106ab5761069160127f0000000000000000000000000000000000000000000000000000000000000000611125565b61069c90600a611222565b6106a69082611078565b6106eb565b6106d67f00000000000000000000000000000000000000000000000000000000000000006012611125565b6106e190600a611222565b6106eb908261104b565b91505090565b60008060006106ff85610720565b91509150808210610714576105858585610975565b808261059a8787610975565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190611249565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef91906110ab565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085591906110ab565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b99190611296565b801561092e575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092391906112b1565b6001600160801b0316145b1561093b57809350610948565b6109458582610a4a565b93505b505050915091565b600061095c8383610975565b61096e90670de0b6b3a76400006112da565b9392505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da91906110ab565b90504281116109f457670de0b6b3a76400009150506105ae565b6000610a008585610a60565b90506000610a0e42846112da565b90506000610a24610a1f8484610b87565b610bc8565b9050610a38670de0b6b3a764000082610bdb565b9450505050506105ae565b5092915050565b6000818311610a59578161096e565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610a9957610a99611303565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610add908590600401611319565b600060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b22919081019061137a565b90508363ffffffff1681600081518110610b3e57610b3e611303565b602002602001015182600181518110610b5957610b59611303565b6020026020010151610b6b919061143e565b610b75919061145e565b6001600160d81b031695945050505050565b600080610b996201518061016d61104b565b610ba3848661104b565b610bad9190611078565b9050610bc0610bbb82610c0a565b610c20565b949350505050565b600080821215610bd757600080fd5b5090565b600080610bf0670de0b6b3a76400008561104b565b9050828181610c0157610c01611062565b04949350505050565b60006001600160ff1b03821115610bd757600080fd5b6000680238fd42c5cf03ffff198212158015610c45575068070c1cc73b00c800008213155b610c845760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cbc57610c9982600003610c20565b6a0c097ce7bc90715b34b9f160241b81610cb557610cb5611062565b0592915050565b60006806f05b59d3b20000008312610cfa57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d30565b6803782dace9d90000008312610d2c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d30565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d805768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dbc576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e30576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610edb576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f145768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105ae576105ae611035565b634e487b7160e01b600052601260045260246000fd5b60008261108757611087611062565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bd57600080fd5b5051919050565b805180151581146110d457600080fd5b919050565b6000806000606084860312156110ee57600080fd5b6110f7846110c4565b9250602084015161ffff8116811461110e57600080fd5b915061111c604085016110c4565b90509250925092565b60ff82811682821603908111156105ae576105ae611035565b600181815b8085111561117957816000190482111561115f5761115f611035565b8085161561116c57918102915b93841c9390800290611143565b509250929050565b600082611190575060016105ae565b8161119d575060006105ae565b81600181146111b357600281146111bd576111d9565b60019150506105ae565b60ff8411156111ce576111ce611035565b50506001821b6105ae565b5060208310610133831016604e8410600b84101617156111fc575081810a6105ae565b611206838361113e565b806000190482111561121a5761121a611035565b029392505050565b600061096e60ff841683611181565b6001600160a01b038116811461124657600080fd5b50565b60008060006060848603121561125e57600080fd5b835161126981611231565b602085015190935061127a81611231565b604085015190925061128b81611231565b809150509250925092565b6000602082840312156112a857600080fd5b61096e826110c4565b6000602082840312156112c357600080fd5b81516001600160801b038116811461096e57600080fd5b818103818111156105ae576105ae611035565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135757835163ffffffff1683529284019291840191600101611335565b50909695505050505050565b80516001600160d81b03811681146110d457600080fd5b6000602080838503121561138d57600080fd5b82516001600160401b03808211156113a457600080fd5b818501915085601f8301126113b857600080fd5b8151818111156113ca576113ca6112ed565b8060051b604051601f19603f830116810181811085821117156113ef576113ef6112ed565b60405291825284820192508381018501918883111561140d57600080fd5b938501935b828510156114325761142385611363565b84529385019392850192611412565b98975050505050505050565b6001600160d81b03828116828216039080821115610a4357610a43611035565b60006001600160d81b038381168061147857611478611062565b9216919091049291505056fea26469706673582212207124f7a52629a94a11c547c6aa69a6519e13fe20e67639c160b2f2c818f1afea64736f6c63430008170033",
180
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105b4565b9050670de0b6b3a7640000610249838361104b565b6102539190611078565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb0856fe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110ab565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106f1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108c565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d9565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b600080600061057085610720565b9150915080821061058e576105858585610950565b925050506105ae565b808261059a8787610950565b6105a4919061104b565b6105859190611078565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063991906110ab565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106ab5761069160127f0000000000000000000000000000000000000000000000000000000000000000611125565b61069c90600a611222565b6106a69082611078565b6106eb565b6106d67f00000000000000000000000000000000000000000000000000000000000000006012611125565b6106e190600a611222565b6106eb908261104b565b91505090565b60008060006106ff85610720565b91509150808210610714576105858585610975565b808261059a8787610975565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190611249565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef91906110ab565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085591906110ab565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b99190611296565b801561092e575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092391906112b1565b6001600160801b0316145b1561093b57809350610948565b6109458582610a4a565b93505b505050915091565b600061095c8383610975565b61096e90670de0b6b3a76400006112da565b9392505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da91906110ab565b90504281116109f457670de0b6b3a76400009150506105ae565b6000610a008585610a60565b90506000610a0e42846112da565b90506000610a24610a1f8484610b87565b610bc8565b9050610a38670de0b6b3a764000082610bdb565b9450505050506105ae565b5092915050565b6000818311610a59578161096e565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610a9957610a99611303565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610add908590600401611319565b600060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b22919081019061137a565b90508363ffffffff1681600081518110610b3e57610b3e611303565b602002602001015182600181518110610b5957610b59611303565b6020026020010151610b6b919061143e565b610b75919061145e565b6001600160d81b031695945050505050565b600080610b996201518061016d61104b565b610ba3848661104b565b610bad9190611078565b9050610bc0610bbb82610c0a565b610c20565b949350505050565b600080821215610bd757600080fd5b5090565b600080610bf0670de0b6b3a76400008561104b565b9050828181610c0157610c01611062565b04949350505050565b60006001600160ff1b03821115610bd757600080fd5b6000680238fd42c5cf03ffff198212158015610c45575068070c1cc73b00c800008213155b610c845760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cbc57610c9982600003610c20565b6a0c097ce7bc90715b34b9f160241b81610cb557610cb5611062565b0592915050565b60006806f05b59d3b20000008312610cfa57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d30565b6803782dace9d90000008312610d2c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d30565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d805768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dbc576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e30576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610edb576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f145768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105ae576105ae611035565b634e487b7160e01b600052601260045260246000fd5b60008261108757611087611062565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bd57600080fd5b5051919050565b805180151581146110d457600080fd5b919050565b6000806000606084860312156110ee57600080fd5b6110f7846110c4565b9250602084015161ffff8116811461110e57600080fd5b915061111c604085016110c4565b90509250925092565b60ff82811682821603908111156105ae576105ae611035565b600181815b8085111561117957816000190482111561115f5761115f611035565b8085161561116c57918102915b93841c9390800290611143565b509250929050565b600082611190575060016105ae565b8161119d575060006105ae565b81600181146111b357600281146111bd576111d9565b60019150506105ae565b60ff8411156111ce576111ce611035565b50506001821b6105ae565b5060208310610133831016604e8410600b84101617156111fc575081810a6105ae565b611206838361113e565b806000190482111561121a5761121a611035565b029392505050565b600061096e60ff841683611181565b6001600160a01b038116811461124657600080fd5b50565b60008060006060848603121561125e57600080fd5b835161126981611231565b602085015190935061127a81611231565b604085015190925061128b81611231565b809150509250925092565b6000602082840312156112a857600080fd5b61096e826110c4565b6000602082840312156112c357600080fd5b81516001600160801b038116811461096e57600080fd5b818103818111156105ae576105ae611035565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135757835163ffffffff1683529284019291840191600101611335565b50909695505050505050565b80516001600160d81b03811681146110d457600080fd5b6000602080838503121561138d57600080fd5b82516001600160401b03808211156113a457600080fd5b818501915085601f8301126113b857600080fd5b8151818111156113ca576113ca6112ed565b8060051b604051601f19603f830116810181811085821117156113ef576113ef6112ed565b60405291825284820192508381018501918883111561140d57600080fd5b938501935b828510156114325761142385611363565b84529385019392850192611412565b98975050505050505050565b6001600160d81b03828116828216039080821115610a4357610a43611035565b60006001600160d81b038381168061147857611478611062565b9216919091049291505056fea26469706673582212207124f7a52629a94a11c547c6aa69a6519e13fe20e67639c160b2f2c818f1afea64736f6c63430008170033",
179
+ "bytecode": "0x6101206040523480156200001257600080fd5b50604051620016fe380380620016fe8339810160408190526200003591620000f0565b63ffffffff84166080526001600160a01b0380841660a052821660c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000157565b60ff1660e0526001600160a01b0316610100525062000183915050565b80516001600160a01b0381168114620000eb57600080fd5b919050565b600080600080608085870312156200010757600080fd5b845163ffffffff811681146200011c57600080fd5b93506200012c60208601620000d3565b92506200013c60408601620000d3565b91506200014c60608601620000d3565b905092959194509250565b6000602082840312156200016a57600080fd5b815160ff811681146200017c57600080fd5b9392505050565b60805160a05160c05160e051610100516114ba620002446000396000818161015d0152818161025f01528181610387015261041a01526000818161018c0152818161063f0152818161066d01526106b001526000818160f701526105b9015260008181610136015281816101e20152818161028e0152818161033c015281816103b6015261044901526000818160b301528181610204015281816102af0152818161035e015281816103d70152818161046a015261053001526114ba6000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105b4565b9050670de0b6b3a7640000610249838361104b565b6102539190611078565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb0856fe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110ab565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106f1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108c565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d9565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b600080600061057085610720565b9150915080821061058e576105858585610950565b925050506105ae565b808261059a8787610950565b6105a4919061104b565b6105859190611078565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063991906110ab565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106ab5761069160127f0000000000000000000000000000000000000000000000000000000000000000611125565b61069c90600a611222565b6106a69082611078565b6106eb565b6106d67f00000000000000000000000000000000000000000000000000000000000000006012611125565b6106e190600a611222565b6106eb908261104b565b91505090565b60008060006106ff85610720565b91509150808210610714576105858585610975565b808261059a8787610975565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190611249565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef91906110ab565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085591906110ab565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b99190611296565b801561092e575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092391906112b1565b6001600160801b0316145b1561093b57809350610948565b6109458582610a4a565b93505b505050915091565b600061095c8383610975565b61096e90670de0b6b3a76400006112da565b9392505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da91906110ab565b90504281116109f457670de0b6b3a76400009150506105ae565b6000610a008585610a60565b90506000610a0e42846112da565b90506000610a24610a1f8484610b87565b610bc8565b9050610a38670de0b6b3a764000082610bdb565b9450505050506105ae565b5092915050565b6000818311610a59578161096e565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610a9957610a99611303565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610add908590600401611319565b600060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b22919081019061137a565b90508363ffffffff1681600081518110610b3e57610b3e611303565b602002602001015182600181518110610b5957610b59611303565b6020026020010151610b6b919061143e565b610b75919061145e565b6001600160d81b031695945050505050565b600080610b996201518061016d61104b565b610ba3848661104b565b610bad9190611078565b9050610bc0610bbb82610c0a565b610c20565b949350505050565b600080821215610bd757600080fd5b5090565b600080610bf0670de0b6b3a76400008561104b565b9050828181610c0157610c01611062565b04949350505050565b60006001600160ff1b03821115610bd757600080fd5b6000680238fd42c5cf03ffff198212158015610c45575068070c1cc73b00c800008213155b610c845760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cbc57610c9982600003610c20565b6a0c097ce7bc90715b34b9f160241b81610cb557610cb5611062565b0592915050565b60006806f05b59d3b20000008312610cfa57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d30565b6803782dace9d90000008312610d2c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d30565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d805768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dbc576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e30576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610edb576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f145768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105ae576105ae611035565b634e487b7160e01b600052601260045260246000fd5b60008261108757611087611062565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bd57600080fd5b5051919050565b805180151581146110d457600080fd5b919050565b6000806000606084860312156110ee57600080fd5b6110f7846110c4565b9250602084015161ffff8116811461110e57600080fd5b915061111c604085016110c4565b90509250925092565b60ff82811682821603908111156105ae576105ae611035565b600181815b8085111561117957816000190482111561115f5761115f611035565b8085161561116c57918102915b93841c9390800290611143565b509250929050565b600082611190575060016105ae565b8161119d575060006105ae565b81600181146111b357600281146111bd576111d9565b60019150506105ae565b60ff8411156111ce576111ce611035565b50506001821b6105ae565b5060208310610133831016604e8410600b84101617156111fc575081810a6105ae565b611206838361113e565b806000190482111561121a5761121a611035565b029392505050565b600061096e60ff841683611181565b6001600160a01b038116811461124657600080fd5b50565b60008060006060848603121561125e57600080fd5b835161126981611231565b602085015190935061127a81611231565b604085015190925061128b81611231565b809150509250925092565b6000602082840312156112a857600080fd5b61096e826110c4565b6000602082840312156112c357600080fd5b81516001600160801b038116811461096e57600080fd5b818103818111156105ae576105ae611035565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135757835163ffffffff1683529284019291840191600101611335565b50909695505050505050565b80516001600160d81b03811681146110d457600080fd5b6000602080838503121561138d57600080fd5b82516001600160401b03808211156113a457600080fd5b818501915085601f8301126113b857600080fd5b8151818111156113ca576113ca6112ed565b8060051b604051601f19603f830116810181811085821117156113ef576113ef6112ed565b60405291825284820192508381018501918883111561140d57600080fd5b938501935b828510156114325761142385611363565b84529385019392850192611412565b98975050505050505050565b6001600160d81b03828116828216039080821115610a4357610a43611035565b60006001600160d81b038381168061147857611478611062565b9216919091049291505056fea26469706673582212206ddc8ae358ddfa62ee3246da3837a07baa596494d73c10b873ba66aa9bada4f564736f6c63430008170033",
180
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105b4565b9050670de0b6b3a7640000610249838361104b565b6102539190611078565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb0856fe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110ab565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106f1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108c565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d9565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b600080600061057085610720565b9150915080821061058e576105858585610950565b925050506105ae565b808261059a8787610950565b6105a4919061104b565b6105859190611078565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063991906110ab565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106ab5761069160127f0000000000000000000000000000000000000000000000000000000000000000611125565b61069c90600a611222565b6106a69082611078565b6106eb565b6106d67f00000000000000000000000000000000000000000000000000000000000000006012611125565b6106e190600a611222565b6106eb908261104b565b91505090565b60008060006106ff85610720565b91509150808210610714576105858585610975565b808261059a8787610975565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190611249565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef91906110ab565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085591906110ab565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b99190611296565b801561092e575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092391906112b1565b6001600160801b0316145b1561093b57809350610948565b6109458582610a4a565b93505b505050915091565b600061095c8383610975565b61096e90670de0b6b3a76400006112da565b9392505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da91906110ab565b90504281116109f457670de0b6b3a76400009150506105ae565b6000610a008585610a60565b90506000610a0e42846112da565b90506000610a24610a1f8484610b87565b610bc8565b9050610a38670de0b6b3a764000082610bdb565b9450505050506105ae565b5092915050565b6000818311610a59578161096e565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610a9957610a99611303565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610add908590600401611319565b600060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b22919081019061137a565b90508363ffffffff1681600081518110610b3e57610b3e611303565b602002602001015182600181518110610b5957610b59611303565b6020026020010151610b6b919061143e565b610b75919061145e565b6001600160d81b031695945050505050565b600080610b996201518061016d61104b565b610ba3848661104b565b610bad9190611078565b9050610bc0610bbb82610c0a565b610c20565b949350505050565b600080821215610bd757600080fd5b5090565b600080610bf0670de0b6b3a76400008561104b565b9050828181610c0157610c01611062565b04949350505050565b60006001600160ff1b03821115610bd757600080fd5b6000680238fd42c5cf03ffff198212158015610c45575068070c1cc73b00c800008213155b610c845760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cbc57610c9982600003610c20565b6a0c097ce7bc90715b34b9f160241b81610cb557610cb5611062565b0592915050565b60006806f05b59d3b20000008312610cfa57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d30565b6803782dace9d90000008312610d2c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d30565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d805768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dbc576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e30576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610edb576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f145768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105ae576105ae611035565b634e487b7160e01b600052601260045260246000fd5b60008261108757611087611062565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bd57600080fd5b5051919050565b805180151581146110d457600080fd5b919050565b6000806000606084860312156110ee57600080fd5b6110f7846110c4565b9250602084015161ffff8116811461110e57600080fd5b915061111c604085016110c4565b90509250925092565b60ff82811682821603908111156105ae576105ae611035565b600181815b8085111561117957816000190482111561115f5761115f611035565b8085161561116c57918102915b93841c9390800290611143565b509250929050565b600082611190575060016105ae565b8161119d575060006105ae565b81600181146111b357600281146111bd576111d9565b60019150506105ae565b60ff8411156111ce576111ce611035565b50506001821b6105ae565b5060208310610133831016604e8410600b84101617156111fc575081810a6105ae565b611206838361113e565b806000190482111561121a5761121a611035565b029392505050565b600061096e60ff841683611181565b6001600160a01b038116811461124657600080fd5b50565b60008060006060848603121561125e57600080fd5b835161126981611231565b602085015190935061127a81611231565b604085015190925061128b81611231565b809150509250925092565b6000602082840312156112a857600080fd5b61096e826110c4565b6000602082840312156112c357600080fd5b81516001600160801b038116811461096e57600080fd5b818103818111156105ae576105ae611035565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135757835163ffffffff1683529284019291840191600101611335565b50909695505050505050565b80516001600160d81b03811681146110d457600080fd5b6000602080838503121561138d57600080fd5b82516001600160401b03808211156113a457600080fd5b818501915085601f8301126113b857600080fd5b8151818111156113ca576113ca6112ed565b8060051b604051601f19603f830116810181811085821117156113ef576113ef6112ed565b60405291825284820192508381018501918883111561140d57600080fd5b938501935b828510156114325761142385611363565b84529385019392850192611412565b98975050505050505050565b6001600160d81b03828116828216039080821115610a4357610a43611035565b60006001600160d81b038381168061147857611478611062565b9216919091049291505056fea26469706673582212206ddc8ae358ddfa62ee3246da3837a07baa596494d73c10b873ba66aa9bada4f564736f6c63430008170033",
181
181
  "linkReferences": {},
182
182
  "deployedLinkReferences": {}
183
183
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../../build-info/9448902e6437463b19a87f038fdc02db.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "BoringPYUsdChainlinkSYOracle",
4
- "sourceName": "contracts/oracles/samples/BoringPYUsdChainlinkSYOracle.sol",
4
+ "sourceName": "contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkSYOracle.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -176,8 +176,8 @@
176
176
  "type": "function"
177
177
  }
178
178
  ],
179
- "bytecode": "0x6101206040523480156200001257600080fd5b50604051620016fc380380620016fc8339810160408190526200003591620000f0565b63ffffffff84166080526001600160a01b0380841660a052821660c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000157565b60ff1660e0526001600160a01b0316610100525062000183915050565b80516001600160a01b0381168114620000eb57600080fd5b919050565b600080600080608085870312156200010757600080fd5b845163ffffffff811681146200011c57600080fd5b93506200012c60208601620000d3565b92506200013c60408601620000d3565b91506200014c60608601620000d3565b905092959194509250565b6000602082840312156200016a57600080fd5b815160ff811681146200017c57600080fd5b9392505050565b60805160a05160c05160e051610100516114b8620002446000396000818161015d0152818161025f01528181610387015261041a01526000818161018c015281816106370152818161066501526106a801526000818160f701526105b1015260008181610136015281816101e20152818161028e0152818161033c015281816103b6015261044901526000818160b301528181610204015281816102af0152818161035e015281816103d70152818161046a015261053001526114b86000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105ac565b9050670de0b6b3a76400006102498383611049565b6102539190611076565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ffec44077f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110a9565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106e9565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a31426d17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108a565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d7565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b60008060006105708561071e565b915091508082106105985761058f82610589878761094e565b90610973565b925050506105a6565b61058f81610589878761094e565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063191906110a9565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106a35761068960127f0000000000000000000000000000000000000000000000000000000000000000611123565b61069490600a611220565b61069e9082611076565b6106e3565b6106ce7f00000000000000000000000000000000000000000000000000000000000000006012611123565b6106d990600a611220565b6106e39082611049565b91505090565b60008060006106f78561071e565b915091508082106107105761058f8261058987876109a2565b61058f8161058987876109a2565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611247565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ed91906110a9565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906110a9565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b79190611294565b801561092c575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092191906112af565b6001600160801b0316145b1561093957809350610946565b6109438582610a77565b93505b505050915091565b600061095a83836109a2565b61096c90670de0b6b3a76400006112d8565b9392505050565b600080610988670de0b6b3a764000085611049565b905082818161099957610999611060565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0791906110a9565b9050428111610a2157670de0b6b3a76400009150506105a6565b6000610a2d8585610a8d565b90506000610a3b42846112d8565b90506000610a51610a4c8484610bb4565b610bf5565b9050610a65670de0b6b3a764000082610973565b9450505050506105a6565b5092915050565b6000818311610a86578161096c565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610ac657610ac6611301565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610b0a908590600401611317565b600060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b4f9190810190611378565b90508363ffffffff1681600081518110610b6b57610b6b611301565b602002602001015182600181518110610b8657610b86611301565b6020026020010151610b98919061143c565b610ba2919061145c565b6001600160d81b031695945050505050565b600080610bc66201518061016d611049565b610bd08486611049565b610bda9190611076565b9050610bed610be882610c08565b610c1e565b949350505050565b600080821215610c0457600080fd5b5090565b60006001600160ff1b03821115610c0457600080fd5b6000680238fd42c5cf03ffff198212158015610c43575068070c1cc73b00c800008213155b610c825760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cba57610c9782600003610c1e565b6a0c097ce7bc90715b34b9f160241b81610cb357610cb3611060565b0592915050565b60006806f05b59d3b20000008312610cf857506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d2e565b6803782dace9d90000008312610d2a57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d2e565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d7e5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dba576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df457682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e2e576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6757680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea05768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610ed9576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f125768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105a6576105a6611033565b634e487b7160e01b600052601260045260246000fd5b60008261108557611085611060565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bb57600080fd5b5051919050565b805180151581146110d257600080fd5b919050565b6000806000606084860312156110ec57600080fd5b6110f5846110c2565b9250602084015161ffff8116811461110c57600080fd5b915061111a604085016110c2565b90509250925092565b60ff82811682821603908111156105a6576105a6611033565b600181815b8085111561117757816000190482111561115d5761115d611033565b8085161561116a57918102915b93841c9390800290611141565b509250929050565b60008261118e575060016105a6565b8161119b575060006105a6565b81600181146111b157600281146111bb576111d7565b60019150506105a6565b60ff8411156111cc576111cc611033565b50506001821b6105a6565b5060208310610133831016604e8410600b84101617156111fa575081810a6105a6565b611204838361113c565b806000190482111561121857611218611033565b029392505050565b600061096c60ff84168361117f565b6001600160a01b038116811461124457600080fd5b50565b60008060006060848603121561125c57600080fd5b83516112678161122f565b60208501519093506112788161122f565b60408501519092506112898161122f565b809150509250925092565b6000602082840312156112a657600080fd5b61096c826110c2565b6000602082840312156112c157600080fd5b81516001600160801b038116811461096c57600080fd5b818103818111156105a6576105a6611033565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135557835163ffffffff1683529284019291840191600101611333565b50909695505050505050565b80516001600160d81b03811681146110d257600080fd5b6000602080838503121561138b57600080fd5b82516001600160401b03808211156113a257600080fd5b818501915085601f8301126113b657600080fd5b8151818111156113c8576113c86112eb565b8060051b604051601f19603f830116810181811085821117156113ed576113ed6112eb565b60405291825284820192508381018501918883111561140b57600080fd5b938501935b828510156114305761142185611361565b84529385019392850192611410565b98975050505050505050565b6001600160d81b03828116828216039080821115610a7057610a70611033565b60006001600160d81b038381168061147657611476611060565b9216919091049291505056fea264697066735822122015c544ea4de58adb697a3d22ede9a84ca90a9e20b9c42e3bc5bcc0ade4ab101364736f6c63430008170033",
180
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105ac565b9050670de0b6b3a76400006102498383611049565b6102539190611076565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ffec44077f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110a9565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106e9565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a31426d17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108a565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d7565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b60008060006105708561071e565b915091508082106105985761058f82610589878761094e565b90610973565b925050506105a6565b61058f81610589878761094e565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063191906110a9565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106a35761068960127f0000000000000000000000000000000000000000000000000000000000000000611123565b61069490600a611220565b61069e9082611076565b6106e3565b6106ce7f00000000000000000000000000000000000000000000000000000000000000006012611123565b6106d990600a611220565b6106e39082611049565b91505090565b60008060006106f78561071e565b915091508082106107105761058f8261058987876109a2565b61058f8161058987876109a2565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611247565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ed91906110a9565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906110a9565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b79190611294565b801561092c575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092191906112af565b6001600160801b0316145b1561093957809350610946565b6109438582610a77565b93505b505050915091565b600061095a83836109a2565b61096c90670de0b6b3a76400006112d8565b9392505050565b600080610988670de0b6b3a764000085611049565b905082818161099957610999611060565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0791906110a9565b9050428111610a2157670de0b6b3a76400009150506105a6565b6000610a2d8585610a8d565b90506000610a3b42846112d8565b90506000610a51610a4c8484610bb4565b610bf5565b9050610a65670de0b6b3a764000082610973565b9450505050506105a6565b5092915050565b6000818311610a86578161096c565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610ac657610ac6611301565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610b0a908590600401611317565b600060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b4f9190810190611378565b90508363ffffffff1681600081518110610b6b57610b6b611301565b602002602001015182600181518110610b8657610b86611301565b6020026020010151610b98919061143c565b610ba2919061145c565b6001600160d81b031695945050505050565b600080610bc66201518061016d611049565b610bd08486611049565b610bda9190611076565b9050610bed610be882610c08565b610c1e565b949350505050565b600080821215610c0457600080fd5b5090565b60006001600160ff1b03821115610c0457600080fd5b6000680238fd42c5cf03ffff198212158015610c43575068070c1cc73b00c800008213155b610c825760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cba57610c9782600003610c1e565b6a0c097ce7bc90715b34b9f160241b81610cb357610cb3611060565b0592915050565b60006806f05b59d3b20000008312610cf857506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d2e565b6803782dace9d90000008312610d2a57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d2e565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d7e5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dba576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df457682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e2e576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6757680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea05768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610ed9576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f125768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105a6576105a6611033565b634e487b7160e01b600052601260045260246000fd5b60008261108557611085611060565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bb57600080fd5b5051919050565b805180151581146110d257600080fd5b919050565b6000806000606084860312156110ec57600080fd5b6110f5846110c2565b9250602084015161ffff8116811461110c57600080fd5b915061111a604085016110c2565b90509250925092565b60ff82811682821603908111156105a6576105a6611033565b600181815b8085111561117757816000190482111561115d5761115d611033565b8085161561116a57918102915b93841c9390800290611141565b509250929050565b60008261118e575060016105a6565b8161119b575060006105a6565b81600181146111b157600281146111bb576111d7565b60019150506105a6565b60ff8411156111cc576111cc611033565b50506001821b6105a6565b5060208310610133831016604e8410600b84101617156111fa575081810a6105a6565b611204838361113c565b806000190482111561121857611218611033565b029392505050565b600061096c60ff84168361117f565b6001600160a01b038116811461124457600080fd5b50565b60008060006060848603121561125c57600080fd5b83516112678161122f565b60208501519093506112788161122f565b60408501519092506112898161122f565b809150509250925092565b6000602082840312156112a657600080fd5b61096c826110c2565b6000602082840312156112c157600080fd5b81516001600160801b038116811461096c57600080fd5b818103818111156105a6576105a6611033565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135557835163ffffffff1683529284019291840191600101611333565b50909695505050505050565b80516001600160d81b03811681146110d257600080fd5b6000602080838503121561138b57600080fd5b82516001600160401b03808211156113a257600080fd5b818501915085601f8301126113b657600080fd5b8151818111156113c8576113c86112eb565b8060051b604051601f19603f830116810181811085821117156113ed576113ed6112eb565b60405291825284820192508381018501918883111561140b57600080fd5b938501935b828510156114305761142185611361565b84529385019392850192611410565b98975050505050505050565b6001600160d81b03828116828216039080821115610a7057610a70611033565b60006001600160d81b038381168061147657611476611060565b9216919091049291505056fea264697066735822122015c544ea4de58adb697a3d22ede9a84ca90a9e20b9c42e3bc5bcc0ade4ab101364736f6c63430008170033",
179
+ "bytecode": "0x6101206040523480156200001257600080fd5b50604051620016fc380380620016fc8339810160408190526200003591620000f0565b63ffffffff84166080526001600160a01b0380841660a052821660c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000157565b60ff1660e0526001600160a01b0316610100525062000183915050565b80516001600160a01b0381168114620000eb57600080fd5b919050565b600080600080608085870312156200010757600080fd5b845163ffffffff811681146200011c57600080fd5b93506200012c60208601620000d3565b92506200013c60408601620000d3565b91506200014c60608601620000d3565b905092959194509250565b6000602082840312156200016a57600080fd5b815160ff811681146200017c57600080fd5b9392505050565b60805160a05160c05160e051610100516114b8620002446000396000818161015d0152818161025f01528181610387015261041a01526000818161018c015281816106370152818161066501526106a801526000818160f701526105b1015260008181610136015281816101e20152818161028e0152818161033c015281816103b6015261044901526000818160b301528181610204015281816102af0152818161035e015281816103d70152818161046a015261053001526114b86000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105ac565b9050670de0b6b3a76400006102498383611049565b6102539190611076565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ffec44077f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110a9565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106e9565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a31426d17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108a565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d7565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b60008060006105708561071e565b915091508082106105985761058f82610589878761094e565b90610973565b925050506105a6565b61058f81610589878761094e565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063191906110a9565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106a35761068960127f0000000000000000000000000000000000000000000000000000000000000000611123565b61069490600a611220565b61069e9082611076565b6106e3565b6106ce7f00000000000000000000000000000000000000000000000000000000000000006012611123565b6106d990600a611220565b6106e39082611049565b91505090565b60008060006106f78561071e565b915091508082106107105761058f8261058987876109a2565b61058f8161058987876109a2565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611247565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ed91906110a9565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906110a9565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b79190611294565b801561092c575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092191906112af565b6001600160801b0316145b1561093957809350610946565b6109438582610a77565b93505b505050915091565b600061095a83836109a2565b61096c90670de0b6b3a76400006112d8565b9392505050565b600080610988670de0b6b3a764000085611049565b905082818161099957610999611060565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0791906110a9565b9050428111610a2157670de0b6b3a76400009150506105a6565b6000610a2d8585610a8d565b90506000610a3b42846112d8565b90506000610a51610a4c8484610bb4565b610bf5565b9050610a65670de0b6b3a764000082610973565b9450505050506105a6565b5092915050565b6000818311610a86578161096c565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610ac657610ac6611301565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610b0a908590600401611317565b600060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b4f9190810190611378565b90508363ffffffff1681600081518110610b6b57610b6b611301565b602002602001015182600181518110610b8657610b86611301565b6020026020010151610b98919061143c565b610ba2919061145c565b6001600160d81b031695945050505050565b600080610bc66201518061016d611049565b610bd08486611049565b610bda9190611076565b9050610bed610be882610c08565b610c1e565b949350505050565b600080821215610c0457600080fd5b5090565b60006001600160ff1b03821115610c0457600080fd5b6000680238fd42c5cf03ffff198212158015610c43575068070c1cc73b00c800008213155b610c825760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cba57610c9782600003610c1e565b6a0c097ce7bc90715b34b9f160241b81610cb357610cb3611060565b0592915050565b60006806f05b59d3b20000008312610cf857506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d2e565b6803782dace9d90000008312610d2a57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d2e565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d7e5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dba576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df457682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e2e576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6757680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea05768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610ed9576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f125768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105a6576105a6611033565b634e487b7160e01b600052601260045260246000fd5b60008261108557611085611060565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bb57600080fd5b5051919050565b805180151581146110d257600080fd5b919050565b6000806000606084860312156110ec57600080fd5b6110f5846110c2565b9250602084015161ffff8116811461110c57600080fd5b915061111a604085016110c2565b90509250925092565b60ff82811682821603908111156105a6576105a6611033565b600181815b8085111561117757816000190482111561115d5761115d611033565b8085161561116a57918102915b93841c9390800290611141565b509250929050565b60008261118e575060016105a6565b8161119b575060006105a6565b81600181146111b157600281146111bb576111d7565b60019150506105a6565b60ff8411156111cc576111cc611033565b50506001821b6105a6565b5060208310610133831016604e8410600b84101617156111fa575081810a6105a6565b611204838361113c565b806000190482111561121857611218611033565b029392505050565b600061096c60ff84168361117f565b6001600160a01b038116811461124457600080fd5b50565b60008060006060848603121561125c57600080fd5b83516112678161122f565b60208501519093506112788161122f565b60408501519092506112898161122f565b809150509250925092565b6000602082840312156112a657600080fd5b61096c826110c2565b6000602082840312156112c157600080fd5b81516001600160801b038116811461096c57600080fd5b818103818111156105a6576105a6611033565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135557835163ffffffff1683529284019291840191600101611333565b50909695505050505050565b80516001600160d81b03811681146110d257600080fd5b6000602080838503121561138b57600080fd5b82516001600160401b03808211156113a257600080fd5b818501915085601f8301126113b657600080fd5b8151818111156113c8576113c86112eb565b8060051b604051601f19603f830116810181811085821117156113ed576113ed6112eb565b60405291825284820192508381018501918883111561140b57600080fd5b938501935b828510156114305761142185611361565b84529385019392850192611410565b98975050505050505050565b6001600160d81b03828116828216039080821115610a7057610a70611033565b60006001600160d81b038381168061147657611476611060565b9216919091049291505056fea2646970667358221220b1780c194f910d66dbb0043f8697e547748a2b92b025310fb1b4091ae7215bfd64736f6c63430008170033",
180
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061008e5760003560e01c8063223a3b261461009357806326d89545146100ae5780632f467dab146100ea57806337a7b7d8146100f257806380f55605146101315780638ca06ea614610158578063addccbb31461017f578063c23953d014610187578063e710b82f146101c0578063f9294d8b146101c8575b600080fd5b61009b6101d2565b6040519081526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100a5565b61009b61025a565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a5565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b6101197f000000000000000000000000000000000000000000000000000000000000000081565b61009b61032c565b6101ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100a5565b61009b610382565b6101d0610413565b005b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610562565b905060006102346105ac565b9050670de0b6b3a76400006102498383611049565b6102539190611076565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ffec44077f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b602060405180830381865afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022891906110a9565b6000806102286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006106e9565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a31426d17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102eb92919061108a565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104a692919061108a565b606060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e791906110d7565b9250925092508215610517576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061055d57604051631229555360e01b815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161050e565b505050565b60008060006105708561071e565b915091508082106105985761058f82610589878761094e565b90610973565b925050506105a6565b61058f81610589878761094e565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063191906110a9565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff16106106a35761068960127f0000000000000000000000000000000000000000000000000000000000000000611123565b61069490600a611220565b61069e9082611076565b6106e3565b6106ce7f00000000000000000000000000000000000000000000000000000000000000006012611123565b6106d990600a611220565b6106e39082611049565b91505090565b60008060006106f78561071e565b915091508082106107105761058f8261058987876109a2565b61058f8161058987876109a2565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611247565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ed91906110a9565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906110a9565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b79190611294565b801561092c575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092191906112af565b6001600160801b0316145b1561093957809350610946565b6109438582610a77565b93505b505050915091565b600061095a83836109a2565b61096c90670de0b6b3a76400006112d8565b9392505050565b600080610988670de0b6b3a764000085611049565b905082818161099957610999611060565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0791906110a9565b9050428111610a2157670de0b6b3a76400009150506105a6565b6000610a2d8585610a8d565b90506000610a3b42846112d8565b90506000610a51610a4c8484610bb4565b610bf5565b9050610a65670de0b6b3a764000082610973565b9450505050506105a6565b5092915050565b6000818311610a86578161096c565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610ac657610ac6611301565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610b0a908590600401611317565b600060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b4f9190810190611378565b90508363ffffffff1681600081518110610b6b57610b6b611301565b602002602001015182600181518110610b8657610b86611301565b6020026020010151610b98919061143c565b610ba2919061145c565b6001600160d81b031695945050505050565b600080610bc66201518061016d611049565b610bd08486611049565b610bda9190611076565b9050610bed610be882610c08565b610c1e565b949350505050565b600080821215610c0457600080fd5b5090565b60006001600160ff1b03821115610c0457600080fd5b6000680238fd42c5cf03ffff198212158015610c43575068070c1cc73b00c800008213155b610c825760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161050e565b6000821215610cba57610c9782600003610c1e565b6a0c097ce7bc90715b34b9f160241b81610cb357610cb3611060565b0592915050565b60006806f05b59d3b20000008312610cf857506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610d2e565b6803782dace9d90000008312610d2a57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610d2e565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610d7e5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610dba576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610df457682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610e2e576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610e6757680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610ea05768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610ed9576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610f125768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105a6576105a6611033565b634e487b7160e01b600052601260045260246000fd5b60008261108557611085611060565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6000602082840312156110bb57600080fd5b5051919050565b805180151581146110d257600080fd5b919050565b6000806000606084860312156110ec57600080fd5b6110f5846110c2565b9250602084015161ffff8116811461110c57600080fd5b915061111a604085016110c2565b90509250925092565b60ff82811682821603908111156105a6576105a6611033565b600181815b8085111561117757816000190482111561115d5761115d611033565b8085161561116a57918102915b93841c9390800290611141565b509250929050565b60008261118e575060016105a6565b8161119b575060006105a6565b81600181146111b157600281146111bb576111d7565b60019150506105a6565b60ff8411156111cc576111cc611033565b50506001821b6105a6565b5060208310610133831016604e8410600b84101617156111fa575081810a6105a6565b611204838361113c565b806000190482111561121857611218611033565b029392505050565b600061096c60ff84168361117f565b6001600160a01b038116811461124457600080fd5b50565b60008060006060848603121561125c57600080fd5b83516112678161122f565b60208501519093506112788161122f565b60408501519092506112898161122f565b809150509250925092565b6000602082840312156112a657600080fd5b61096c826110c2565b6000602082840312156112c157600080fd5b81516001600160801b038116811461096c57600080fd5b818103818111156105a6576105a6611033565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561135557835163ffffffff1683529284019291840191600101611333565b50909695505050505050565b80516001600160d81b03811681146110d257600080fd5b6000602080838503121561138b57600080fd5b82516001600160401b03808211156113a257600080fd5b818501915085601f8301126113b657600080fd5b8151818111156113c8576113c86112eb565b8060051b604051601f19603f830116810181811085821117156113ed576113ed6112eb565b60405291825284820192508381018501918883111561140b57600080fd5b938501935b828510156114305761142185611361565b84529385019392850192611410565b98975050505050505050565b6001600160d81b03828116828216039080821115610a7057610a70611033565b60006001600160d81b038381168061147657611476611060565b9216919091049291505056fea2646970667358221220b1780c194f910d66dbb0043f8697e547748a2b92b025310fb1b4091ae7215bfd64736f6c63430008170033",
181
181
  "linkReferences": {},
182
182
  "deployedLinkReferences": {}
183
183
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../../build-info/9448902e6437463b19a87f038fdc02db.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "BoringPtSeller",
4
- "sourceName": "contracts/oracles/samples/BoringPtSeller.sol",
4
+ "sourceName": "contracts/oracles/PtYtLpOracle/samples/BoringPtSeller.sol",
5
5
  "abi": [],
6
6
  "bytecode": "0x",
7
7
  "deployedBytecode": "0x",
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/9448902e6437463b19a87f038fdc02db.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "PendleBoringOneracle",
4
- "sourceName": "contracts/oracles/PendleBoringOneracle.sol",
4
+ "sourceName": "contracts/oracles/internal/PendleBoringOneracle.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [],
@@ -17,8 +17,8 @@
17
17
  "type": "function"
18
18
  }
19
19
  ],
20
- "bytecode": "0x6080604052348015600f57600080fd5b50607e80601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b670de0b6b3a764000060405190815260200160405180910390f3fea264697066735822122097ba8034c88af152d89201d46083bca2a792bac3c26696f9962a5f0ade070d5064736f6c63430008170033",
21
- "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b670de0b6b3a764000060405190815260200160405180910390f3fea264697066735822122097ba8034c88af152d89201d46083bca2a792bac3c26696f9962a5f0ade070d5064736f6c63430008170033",
20
+ "bytecode": "0x6080604052348015600f57600080fd5b50607e80601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b670de0b6b3a764000060405190815260200160405180910390f3fea2646970667358221220a9e3378b5010d66ef55debed5c5afbc8bddbdcd81ef805f9bc7e0f0599bdd16064736f6c63430008170033",
21
+ "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b670de0b6b3a764000060405190815260200160405180910390f3fea2646970667358221220a9e3378b5010d66ef55debed5c5afbc8bddbdcd81ef805f9bc7e0f0599bdd16064736f6c63430008170033",
22
22
  "linkReferences": {},
23
23
  "deployedLinkReferences": {}
24
24
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/9448902e6437463b19a87f038fdc02db.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "PendleBoringSolvBTCOneracle",
4
- "sourceName": "contracts/oracles/PendleBoringSolvBTCOneracle.sol",
4
+ "sourceName": "contracts/oracles/internal/PendleBoringSolvBTCOneracle.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [],
@@ -17,8 +17,8 @@
17
17
  "type": "function"
18
18
  }
19
19
  ],
20
- "bytecode": "0x6080604052348015600f57600080fd5b50607a80601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b6305f5e10060405190815260200160405180910390f3fea26469706673582212201885455e3a9346ff1ce08f1b9cb7d2502fe9aa78c0bf7c2a31a9e95d4cdd5b6964736f6c63430008170033",
21
- "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b6305f5e10060405190815260200160405180910390f3fea26469706673582212201885455e3a9346ff1ce08f1b9cb7d2502fe9aa78c0bf7c2a31a9e95d4cdd5b6964736f6c63430008170033",
20
+ "bytecode": "0x6080604052348015600f57600080fd5b50607a80601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b6305f5e10060405190815260200160405180910390f3fea264697066735822122028738ca8895774e32cb7b5cdd0bd7c2e9155e4e74b73fe8dc1d89894d6b069bd64736f6c63430008170033",
21
+ "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063e6aa216c14602d575b600080fd5b6305f5e10060405190815260200160405180910390f3fea264697066735822122028738ca8895774e32cb7b5cdd0bd7c2e9155e4e74b73fe8dc1d89894d6b069bd64736f6c63430008170033",
22
22
  "linkReferences": {},
23
23
  "deployedLinkReferences": {}
24
24
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/9448902e6437463b19a87f038fdc02db.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "PendleRedStoneRateOracleAdapter",
4
- "sourceName": "contracts/oracles/PendleRedStoneRateOracleAdapter.sol",
4
+ "sourceName": "contracts/oracles/internal/PendleRedStoneRateOracleAdapter.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -72,8 +72,8 @@
72
72
  "type": "function"
73
73
  }
74
74
  ],
75
- "bytecode": "0x60e060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100c8565b6001600160a01b038216608081905260ff821660a0526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa158015610080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a49190610109565b60ff1660c0525061012b9050565b805160ff811681146100c357600080fd5b919050565b600080604083850312156100db57600080fd5b82516001600160a01b03811681146100f257600080fd5b9150610100602084016100b2565b90509250929050565b60006020828403121561011b57600080fd5b610124826100b2565b9392505050565b60805160a05160c0516103b861016c6000396000818160940152610197015260008181605601526101c201526000818160bb015261011001526103b86000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063313ce567146100515780633b97423f1461008f5780637dc0d1d0146100b6578063e6aa216c146100f5575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610086565b6100fd61010b565b604051908152602001610086565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610190919061021e565b90506101bd7f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101e87f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101f18361020b565b6101fb9190610349565b6102059190610360565b91505090565b60008082121561021a57600080fd5b5090565b60006020828403121561023057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561028857816000190482111561026e5761026e610237565b8085161561027b57918102915b93841c9390800290610252565b509250929050565b60008261029f5750600161032d565b816102ac5750600061032d565b81600181146102c257600281146102cc576102e8565b600191505061032d565b60ff8411156102dd576102dd610237565b50506001821b61032d565b5060208310610133831016604e8410600b841016171561030b575081810a61032d565b610315838361024d565b806000190482111561032957610329610237565b0290505b92915050565b600061034260ff841683610290565b9392505050565b808202811582820484141761032d5761032d610237565b60008261037d57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220eb5edf9368030fc9e21bada3515388b02bdbad8c7efa1d0e6698cf71eed426bd64736f6c63430008170033",
76
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063313ce567146100515780633b97423f1461008f5780637dc0d1d0146100b6578063e6aa216c146100f5575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610086565b6100fd61010b565b604051908152602001610086565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610190919061021e565b90506101bd7f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101e87f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101f18361020b565b6101fb9190610349565b6102059190610360565b91505090565b60008082121561021a57600080fd5b5090565b60006020828403121561023057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561028857816000190482111561026e5761026e610237565b8085161561027b57918102915b93841c9390800290610252565b509250929050565b60008261029f5750600161032d565b816102ac5750600061032d565b81600181146102c257600281146102cc576102e8565b600191505061032d565b60ff8411156102dd576102dd610237565b50506001821b61032d565b5060208310610133831016604e8410600b841016171561030b575081810a61032d565b610315838361024d565b806000190482111561032957610329610237565b0290505b92915050565b600061034260ff841683610290565b9392505050565b808202811582820484141761032d5761032d610237565b60008261037d57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220eb5edf9368030fc9e21bada3515388b02bdbad8c7efa1d0e6698cf71eed426bd64736f6c63430008170033",
75
+ "bytecode": "0x60e060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100c8565b6001600160a01b038216608081905260ff821660a0526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa158015610080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a49190610109565b60ff1660c0525061012b9050565b805160ff811681146100c357600080fd5b919050565b600080604083850312156100db57600080fd5b82516001600160a01b03811681146100f257600080fd5b9150610100602084016100b2565b90509250929050565b60006020828403121561011b57600080fd5b610124826100b2565b9392505050565b60805160a05160c0516103b861016c6000396000818160940152610197015260008181605601526101c201526000818160bb015261011001526103b86000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063313ce567146100515780633b97423f1461008f5780637dc0d1d0146100b6578063e6aa216c146100f5575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610086565b6100fd61010b565b604051908152602001610086565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610190919061021e565b90506101bd7f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101e87f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101f18361020b565b6101fb9190610349565b6102059190610360565b91505090565b60008082121561021a57600080fd5b5090565b60006020828403121561023057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561028857816000190482111561026e5761026e610237565b8085161561027b57918102915b93841c9390800290610252565b509250929050565b60008261029f5750600161032d565b816102ac5750600061032d565b81600181146102c257600281146102cc576102e8565b600191505061032d565b60ff8411156102dd576102dd610237565b50506001821b61032d565b5060208310610133831016604e8410600b841016171561030b575081810a61032d565b610315838361024d565b806000190482111561032957610329610237565b0290505b92915050565b600061034260ff841683610290565b9392505050565b808202811582820484141761032d5761032d610237565b60008261037d57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212201d454d1b805b3d0e7748f75e459f65054f960a2b52032705ecbf40e4116412dd64736f6c63430008170033",
76
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063313ce567146100515780633b97423f1461008f5780637dc0d1d0146100b6578063e6aa216c146100f5575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610086565b6100fd61010b565b604051908152602001610086565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610190919061021e565b90506101bd7f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101e87f0000000000000000000000000000000000000000000000000000000000000000600a610333565b6101f18361020b565b6101fb9190610349565b6102059190610360565b91505090565b60008082121561021a57600080fd5b5090565b60006020828403121561023057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561028857816000190482111561026e5761026e610237565b8085161561027b57918102915b93841c9390800290610252565b509250929050565b60008261029f5750600161032d565b816102ac5750600061032d565b81600181146102c257600281146102cc576102e8565b600191505061032d565b60ff8411156102dd576102dd610237565b50506001821b61032d565b5060208310610133831016604e8410600b841016171561030b575081810a61032d565b610315838361024d565b806000190482111561032957610329610237565b0290505b92915050565b600061034260ff841683610290565b9392505050565b808202811582820484141761032d5761032d610237565b60008261037d57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212201d454d1b805b3d0e7748f75e459f65054f960a2b52032705ecbf40e4116412dd64736f6c63430008170033",
77
77
  "linkReferences": {},
78
78
  "deployedLinkReferences": {}
79
79
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/9448902e6437463b19a87f038fdc02db.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "PTExpiry",
4
- "sourceName": "contracts/oracles/PendleSparkLinearDiscountOracle.sol",
4
+ "sourceName": "contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [],
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/9448902e6437463b19a87f038fdc02db.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "PendleSparkLinearDiscountOracle",
4
- "sourceName": "contracts/oracles/PendleSparkLinearDiscountOracle.sol",
4
+ "sourceName": "contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -124,8 +124,8 @@
124
124
  "type": "function"
125
125
  }
126
126
  ],
127
- "bytecode": "0x60e060405234801561001057600080fd5b5060405161051238038061051283398101604081905261002f9161013e565b670de0b6b3a764000081111561007f5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a5908191a5cd8dbdd5b9d60821b60448201526064015b60405180910390fd5b6001600160a01b0382166100c45760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610076565b6001600160a01b0382166080819052604080516370c264df60e11b8152905163e184c9be916004808201926020929091908290030181865afa15801561010e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101329190610178565b60a05260c05250610191565b6000806040838503121561015157600080fd5b82516001600160a01b038116811461016857600080fd5b6020939093015192949293505050565b60006020828403121561018a57600080fd5b5051919050565b60805160a05160c0516103406101d26000396000818160c80152610171015260008181606c015281816101b201526101e30152600060ef01526103406000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063204f83f9146100675780632336dbe4146100a1578063313ce567146100b4578063598e5451146100c3578063d94073d4146100ea578063feaf968c14610129575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61008e6100af36600461028f565b610165565b60405160128152602001610098565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610098565b6101316101a6565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610098565b60006301e133806101967f0000000000000000000000000000000000000000000000000000000000000000846102be565b6101a091906102d5565b92915050565b600080600080600080427f0000000000000000000000000000000000000000000000000000000000000000116101dd576000610207565b610207427f00000000000000000000000000000000000000000000000000000000000000006102f7565b9050600061021482610165565b9050670de0b6b3a76400008111156102665760405162461bcd60e51b8152602060048201526011602482015270646973636f756e74206f766572666c6f7760781b604482015260640160405180910390fd5b600061027a82670de0b6b3a76400006102f7565b90989097506000965086955085945092505050565b6000602082840312156102a157600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101a0576101a06102a8565b6000826102f257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101a0576101a06102a856fea2646970667358221220e33f0d602637423a3f996be3b05ec1d8242f6c6bcc289a97e3b27fa7cc0cbc0464736f6c63430008170033",
128
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063204f83f9146100675780632336dbe4146100a1578063313ce567146100b4578063598e5451146100c3578063d94073d4146100ea578063feaf968c14610129575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61008e6100af36600461028f565b610165565b60405160128152602001610098565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610098565b6101316101a6565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610098565b60006301e133806101967f0000000000000000000000000000000000000000000000000000000000000000846102be565b6101a091906102d5565b92915050565b600080600080600080427f0000000000000000000000000000000000000000000000000000000000000000116101dd576000610207565b610207427f00000000000000000000000000000000000000000000000000000000000000006102f7565b9050600061021482610165565b9050670de0b6b3a76400008111156102665760405162461bcd60e51b8152602060048201526011602482015270646973636f756e74206f766572666c6f7760781b604482015260640160405180910390fd5b600061027a82670de0b6b3a76400006102f7565b90989097506000965086955085945092505050565b6000602082840312156102a157600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101a0576101a06102a8565b6000826102f257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101a0576101a06102a856fea2646970667358221220e33f0d602637423a3f996be3b05ec1d8242f6c6bcc289a97e3b27fa7cc0cbc0464736f6c63430008170033",
127
+ "bytecode": "0x60e060405234801561001057600080fd5b5060405161051238038061051283398101604081905261002f9161013e565b670de0b6b3a764000081111561007f5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a5908191a5cd8dbdd5b9d60821b60448201526064015b60405180910390fd5b6001600160a01b0382166100c45760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610076565b6001600160a01b0382166080819052604080516370c264df60e11b8152905163e184c9be916004808201926020929091908290030181865afa15801561010e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101329190610178565b60a05260c05250610191565b6000806040838503121561015157600080fd5b82516001600160a01b038116811461016857600080fd5b6020939093015192949293505050565b60006020828403121561018a57600080fd5b5051919050565b60805160a05160c0516103406101d26000396000818160c80152610171015260008181606c015281816101b201526101e30152600060ef01526103406000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063204f83f9146100675780632336dbe4146100a1578063313ce567146100b4578063598e5451146100c3578063d94073d4146100ea578063feaf968c14610129575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61008e6100af36600461028f565b610165565b60405160128152602001610098565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610098565b6101316101a6565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610098565b60006301e133806101967f0000000000000000000000000000000000000000000000000000000000000000846102be565b6101a091906102d5565b92915050565b600080600080600080427f0000000000000000000000000000000000000000000000000000000000000000116101dd576000610207565b610207427f00000000000000000000000000000000000000000000000000000000000000006102f7565b9050600061021482610165565b9050670de0b6b3a76400008111156102665760405162461bcd60e51b8152602060048201526011602482015270646973636f756e74206f766572666c6f7760781b604482015260640160405180910390fd5b600061027a82670de0b6b3a76400006102f7565b90989097506000965086955085945092505050565b6000602082840312156102a157600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101a0576101a06102a8565b6000826102f257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101a0576101a06102a856fea2646970667358221220417d7d239712adda0978f25f59e5bb4dce9016e9ca48e1006a4a3e8027ca1c8764736f6c63430008170033",
128
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063204f83f9146100675780632336dbe4146100a1578063313ce567146100b4578063598e5451146100c3578063d94073d4146100ea578063feaf968c14610129575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61008e6100af36600461028f565b610165565b60405160128152602001610098565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610098565b6101316101a6565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610098565b60006301e133806101967f0000000000000000000000000000000000000000000000000000000000000000846102be565b6101a091906102d5565b92915050565b600080600080600080427f0000000000000000000000000000000000000000000000000000000000000000116101dd576000610207565b610207427f00000000000000000000000000000000000000000000000000000000000000006102f7565b9050600061021482610165565b9050670de0b6b3a76400008111156102665760405162461bcd60e51b8152602060048201526011602482015270646973636f756e74206f766572666c6f7760781b604482015260640160405180910390fd5b600061027a82670de0b6b3a76400006102f7565b90989097506000965086955085945092505050565b6000602082840312156102a157600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101a0576101a06102a8565b6000826102f257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101a0576101a06102a856fea2646970667358221220417d7d239712adda0978f25f59e5bb4dce9016e9ca48e1006a4a3e8027ca1c8764736f6c63430008170033",
129
129
  "linkReferences": {},
130
130
  "deployedLinkReferences": {}
131
131
  }
@@ -6,17 +6,18 @@ import "./IPChainlinkOracle.sol";
6
6
  interface IPChainlinkOracleFactory {
7
7
  event OracleCreated(
8
8
  address indexed market,
9
- uint32 twapDuration,
10
- PendleOracleType baseOracleType,
11
- address indexed oracle,
9
+ uint32 indexed twapDuration,
10
+ PendleOracleType indexed baseOracleType,
11
+ address oracle,
12
12
  bytes32 oracleId
13
13
  );
14
14
  event OracleWithQuoteCreated(
15
15
  address indexed market,
16
- uint32 twapDuration,
17
- PendleOracleType baseOracleType,
18
- address indexed quoteOracle,
19
- address indexed oracle,
16
+ uint32 indexed twapDuration,
17
+ PendleOracleType indexed baseOracleType,
18
+ address quoteOracle1,
19
+ address quoteOracle2,
20
+ address oracle,
20
21
  bytes32 oracleId
21
22
  );
22
23
  }
@@ -3,8 +3,8 @@ pragma solidity ^0.8.17;
3
3
 
4
4
  import "./PendlePYOracleLib.sol";
5
5
  import "./PendleLpOracleLib.sol";
6
- import "../interfaces/IPPYLpOracle.sol";
7
- import "../core/libraries/BoringOwnableUpgradeable.sol";
6
+ import "../../interfaces/IPPYLpOracle.sol";
7
+ import "../../core/libraries/BoringOwnableUpgradeable.sol";
8
8
 
9
9
  // This is a pre-deployed version of PendlePtOracleLib & PendleLpOracleLib with additional utility functions.
10
10
  // Use of this contract rather than direct library integration resulting in a smaller bytecode size and simpler structure
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity ^0.8.0;
3
3
 
4
- import "../interfaces/IPMarket.sol";
5
- import "../core/libraries/math/PMath.sol";
4
+ import "../../interfaces/IPMarket.sol";
5
+ import "../../core/libraries/math/PMath.sol";
6
6
 
7
7
  // This library can & should be integrated directly for optimal gas usage.
8
8
  // If you prefer not to integrate it directly, the PendlePtOracle contract (a pre-deployed version of this contract) can be used.
@@ -0,0 +1,40 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.17;
3
+
4
+ import "./PendleChainlinkOracleBase.sol";
5
+
6
+ /**
7
+ * @dev The round data returned from this contract will follow:
8
+ * - There will be only one round (roundId=0)
9
+ * - startedAt, updatedAt will always be 0
10
+ */
11
+ contract PendleChainlinkOracle is PendleChainlinkOracleBase {
12
+ constructor(
13
+ address _market,
14
+ uint32 _twapDuration,
15
+ PendleOracleType _baseOracleType
16
+ ) PendleChainlinkOracleBase(_market, _twapDuration, _baseOracleType) {}
17
+
18
+ /**
19
+ * @notice The round data returned from this contract will follow:
20
+ * - answer will satisfy 1 natural unit of PendleToken = (answer/1e18) natural unit of OutputToken
21
+ * - In other words, 10**(PendleToken.decimals) = (answer/1e18) * 10**(OutputToken.decimals)
22
+ * @param roundId always 0 for this contract
23
+ * @param answer The answer (in 18 decimals)
24
+ * @param startedAt always 0 for this contract
25
+ * @param updatedAt always block.timestamp for this contract
26
+ * @param answeredInRound always 0 for this contract
27
+ */
28
+ function latestRoundData()
29
+ public
30
+ view
31
+ override
32
+ returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
33
+ {
34
+ roundId = 0;
35
+ answer = _getPendleTokenPrice();
36
+ startedAt = 0;
37
+ updatedAt = block.timestamp;
38
+ answeredInRound = 0;
39
+ }
40
+ }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity ^0.8.17;
3
3
 
4
- import "../../interfaces/IPChainlinkOracle.sol";
4
+ import "../../../interfaces/IPChainlinkOracle.sol";
5
5
  import "../PendleLpOracleLib.sol";
6
6
 
7
7
  /**
@@ -27,7 +27,7 @@ abstract contract PendleChainlinkOracleBase is IPChainlinkOracle {
27
27
 
28
28
  PendleOracleType public immutable baseOracleType;
29
29
 
30
- function(IPMarket, uint32) internal view returns (uint256) internal immutable getRate;
30
+ function(IPMarket, uint32) internal view returns (uint256) internal immutable getPendlePrice;
31
31
 
32
32
  modifier validateRoundId(uint80 roundId) {
33
33
  if (roundId != 0) {
@@ -42,7 +42,7 @@ abstract contract PendleChainlinkOracleBase is IPChainlinkOracle {
42
42
  twapDuration = _twapDuration;
43
43
  baseOracleType = _baseOracleType;
44
44
  (fromTokenDecimals, toTokenDecimals) = _readDecimals(_market, _baseOracleType);
45
- getRate = getMethod();
45
+ getPendlePrice = _getPendlePriceFunc();
46
46
  }
47
47
 
48
48
  // =================================================================
@@ -53,14 +53,7 @@ abstract contract PendleChainlinkOracleBase is IPChainlinkOracle {
53
53
  public
54
54
  view
55
55
  virtual
56
- returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
57
- {
58
- roundId = 0;
59
- answer = _getFinalPrice();
60
- startedAt = 0;
61
- updatedAt = block.timestamp;
62
- answeredInRound = 0;
63
- }
56
+ returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
64
57
 
65
58
  function getRoundData(
66
59
  uint80 roundId
@@ -84,21 +77,19 @@ abstract contract PendleChainlinkOracleBase is IPChainlinkOracle {
84
77
  // PRICING FUNCTIONS
85
78
  // =================================================================
86
79
 
87
- function _getFinalPrice() internal view virtual returns (int256);
88
-
89
80
  function _getPendleTokenPrice() internal view returns (int256) {
90
- return _descalePrice(getRate(IPMarket(market), twapDuration));
81
+ return _descalePrice(getPendlePrice(IPMarket(market), twapDuration));
91
82
  }
92
83
 
93
84
  function _descalePrice(uint256 price) internal view returns (int256 unwrappedPrice) {
94
- unwrappedPrice = PMath.Int((price * (10 ** fromTokenDecimals)) / (10 ** toTokenDecimals));
85
+ return PMath.Int((price * (10 ** fromTokenDecimals)) / (10 ** toTokenDecimals));
95
86
  }
96
87
 
97
88
  // =================================================================
98
89
  // USE ONLY AT INITIALIZATION
99
90
  // =================================================================
100
91
 
101
- function getMethod() internal view returns (function(IPMarket, uint32) internal view returns (uint256)) {
92
+ function _getPendlePriceFunc() internal view returns (function(IPMarket, uint32) internal view returns (uint256)) {
102
93
  if (baseOracleType == PendleOracleType.PT_TO_SY) {
103
94
  return PendlePYOracleLib.getPtToSyRate;
104
95
  } else if (baseOracleType == PendleOracleType.PT_TO_ASSET) {