[
    {
        "timestamp": 1659750766,
        "version": "0.36.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.36.0",
        "changes": [
            {
                "note": "Add Synthetix support in Ethereum and Optimism bridge adapters",
                "pr": 518
            }
        ],
        "timestamp": 1658950329
    },
    {
        "version": "0.35.0",
        "changes": [
            {
                "note": "Adds support for Velodrome OptimismBridgeAdapter",
                "pr": 494
            }
        ],
        "timestamp": 1655244958
    },
    {
        "version": "0.34.0",
        "changes": [
            {
                "note": "Splits BridgeAdapter up by chain",
                "pr": 487
            },
            {
                "note": "Add stETH wrap/unwrap support",
                "pr": 476
            },
            {
                "note": "Adds support for BancorV3 to EthereumBridgeAdapter",
                "pr": 492
            }
        ],
        "timestamp": 1654284040
    },
    {
        "version": "0.33.0",
        "changes": [
            {
                "note": "Add support for GMX and Platypus to bridge adapter",
                "pr": 478
            }
        ],
        "timestamp": 1652919697
    },
    {
        "version": "0.32.0",
        "changes": [
            {
                "note": "Add support for `BalancerV2Batch` fills in FQT",
                "pr": 462
            }
        ],
        "timestamp": 1650611093
    },
    {
        "timestamp": 1648739346,
        "version": "0.31.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1646225739,
        "version": "0.31.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.31.0",
        "changes": [
            {
                "note": "Add ERC721OrdersFeature, ERC1155OrdersFeature, and ERC165Feature",
                "pr": 429
            }
        ],
        "timestamp": 1645569128
    },
    {
        "timestamp": 1640364306,
        "version": "0.30.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.30.0",
        "changes": [
            {
                "note": "Add `AaveV2` and `Compound` deposit/withdrawal liquidity source",
                "pr": 321
            }
        ],
        "timestamp": 1638390144
    },
    {
        "timestamp": 1637102971,
        "version": "0.29.5",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.29.4",
        "changes": [
            {
                "note": "Prevent EP ETH balance from reducing when executin mtxs",
                "pr": 365
            }
        ],
        "timestamp": 1637065617
    },
    {
        "version": "0.29.3",
        "changes": [
            {
                "note": "Register transformERC20() and remove transformERC20Staging()",
                "pr": 355
            },
            {
                "note": "Add OtcOrders to FullMigration",
                "pr": 350
            }
        ],
        "timestamp": 1635903615
    },
    {
        "timestamp": 1634668033,
        "version": "0.29.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1633374058,
        "version": "0.29.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.29.0",
        "changes": [
            {
                "note": "Export TransformERC20FeatureContract",
                "pr": 282
            }
        ],
        "timestamp": 1632957537
    },
    {
        "timestamp": 1631710679,
        "version": "0.28.5",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1631120757,
        "version": "0.28.4",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1630459879,
        "version": "0.28.3",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.28.2",
        "changes": [
            {
                "note": "Add ethers as an explicit dependency",
                "pr": 310
            }
        ],
        "timestamp": 1629414734
    },
    {
        "timestamp": 1629353596,
        "version": "0.28.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.28.0",
        "changes": [
            {
                "note": "Transfer output tokens in TransformERC20Feature",
                "pr": 279
            },
            {
                "note": "Add support for takerToken=0xeee... in OtcOrdersFeature",
                "pr": 287
            },
            {
                "note": "Add support for OTC orders in MultiplexFeature",
                "pr": 287
            },
            {
                "note": "Multiplex v2: Refactor into multiple files, add ETH support, and other miscellanea",
                "pr": 263
            }
        ],
        "timestamp": 1629079369
    },
    {
        "timestamp": 1628665757,
        "version": "0.27.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.27.0",
        "changes": [
            {
                "note": "Add `Clipper` as a custom liquidity source"
            }
        ],
        "timestamp": 1628225642
    },
    {
        "version": "0.26.0",
        "changes": [
            {
                "note": "Add Lido stETH deposit integration",
                "pr": 260
            }
        ],
        "timestamp": 1624356181
    },
    {
        "timestamp": 1623382456,
        "version": "0.25.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.25.0",
        "changes": [
            {
                "note": "Add OtcOrdersFeature",
                "pr": 244
            },
            {
                "note": "Add UniswapV3 VIP feature",
                "pr": 237
            }
        ],
        "timestamp": 1622609597
    },
    {
        "timestamp": 1621944788,
        "version": "0.24.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.24.0",
        "changes": [
            {
                "note": "Add special selectors to selector collision test",
                "pr": 243
            }
        ],
        "timestamp": 1621600614
    },
    {
        "version": "0.23.0",
        "changes": [
            {
                "note": "Added ETH support to `MixinCurve`",
                "pr": 220
            },
            {
                "note": "Add Balancer V2 integration",
                "pr": 206
            }
        ],
        "timestamp": 1620214333
    },
    {
        "timestamp": 1619830995,
        "version": "0.22.3",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1619825976,
        "version": "0.22.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.22.1",
        "changes": [
            {
                "note": "bump feature version to 1.2",
                "pr": 213
            }
        ],
        "timestamp": 1619596077
    },
    {
        "version": "0.22.0",
        "changes": [
            {
                "note": "Add order signer registry to NativeOrdersFeature",
                "pr": 195
            }
        ],
        "timestamp": 1619481586
    },
    {
        "timestamp": 1618259868,
        "version": "0.21.1",
        "changes": [
            {
                "note": "Dependencies updated"
            },
            {
                "note": "BSC Uniswap clones (ApeSwap, CafeSwap, CheeseSwap, JulSwap)",
                "pr": 208
            }
        ]
    },
    {
        "version": "0.21.0",
        "changes": [
            {
                "note": "Encoding protocol ID and source name in bridge source ID",
                "pr": 162
            },
            {
                "note": "Add PancakeSwapFeature",
                "pr": 164
            },
            {
                "note": "Remove TokenSpender/AllowanceTarget/greedy tokens stuff",
                "pr": 164
            },
            {
                "note": "Added Nerve in BridgeAdapter",
                "pr": 181
            },
            {
                "note": "Delete TokenSpenderFeature",
                "pr": 189
            },
            {
                "note": "Fix PancakeSwapFeature BakerySwap swap selector",
                "pr": 190
            }
        ],
        "timestamp": 1617311315
    },
    {
        "version": "0.20.0",
        "changes": [
            {
                "note": "Add `MooniswapLiquidityProvider`",
                "pr": 143
            },
            {
                "note": "Emit `LiquidityProviderFill` event in `CurveLiquidityProvider`",
                "pr": 143
            },
            {
                "note": "Add BatchFillNativeOrdersFeature and MultiplexFeature",
                "pr": 140
            },
            {
                "note": "Export MultiplexFeatureContract",
                "pr": 168
            }
        ],
        "timestamp": 1616005394
    },
    {
        "version": "0.19.0",
        "changes": [
            {
                "note": "Add `CurveLiquidityProvider` and misc refactors",
                "pr": 127
            },
            {
                "note": "Export `CurveLiquidityProviderContract`",
                "pr": 144
            },
            {
                "note": "Add `DodoV2`",
                "pr": 152
            },
            {
                "note": "Add `Linkswap`",
                "pr": 153
            },
            {
                "note": "refund ETH with no gas limit in FQT",
                "pr": 155
            },
            {
                "note": "Added an opt-in `PositiveSlippageAffiliateFee`",
                "pr": 101
            }
        ],
        "timestamp": 1614141718
    },
    {
        "version": "0.18.2",
        "changes": [
            {
                "note": "Update FQT for v4 native orders",
                "pr": 104
            }
        ],
        "timestamp": 1612950500
    },
    {
        "version": "0.18.1",
        "changes": [
            {
                "note": "Swallow reverts in `batchGetLimitOrderRelevantStates()` and `batchGetRfqOrderRelevantStates()`",
                "pr": 117
            }
        ],
        "timestamp": 1611648096
    },
    {
        "version": "0.18.0",
        "changes": [
            {
                "note": "Use consistent returndatasize checks in UniswapFeature",
                "pr": 96
            },
            {
                "note": "Remove `MetaTransactionsFeature._executeMetaTransaction()` and `SignatureValidatorFeature`",
                "pr": 109
            }
        ],
        "timestamp": 1610510890
    },
    {
        "version": "0.17.0",
        "changes": [
            {
                "note": "Add DevUtils-like functions to `NativeOrdersFeature`",
                "pr": 97
            },
            {
                "note": "Add SPDX license identifiers to solidity files",
                "pr": 105
            }
        ],
        "timestamp": 1609802516
    },
    {
        "version": "0.16.0",
        "changes": [
            {
                "note": "Fix CryptoCom rollup"
            }
        ],
        "timestamp": 1608692071
    },
    {
        "version": "0.15.0",
        "changes": [
            {
                "note": "Add MixinBancor to BridgeAdapter",
                "pr": 91
            },
            {
                "note": "Add MixinCoFiX to BridgeAdapter",
                "pr": 92
            }
        ],
        "timestamp": 1608245516
    },
    {
        "version": "0.14.0",
        "changes": [
            {
                "note": "Use the `MetaTransaction` class from `@0x/protocol-utils` in tests.",
                "pr": 90
            }
        ],
        "timestamp": 1608149382
    },
    {
        "version": "0.13.0",
        "changes": [
            {
                "note": "Address audit feedback in UniswapFeature",
                "pr": 82
            },
            {
                "note": "Always transfer `msg.value` to the liquidity provider contract in LiquidityProviderFeature to",
                "pr": 82
            },
            {
                "note": "Remove backwards compatibility with old PLP/bridge interface in `LiquidityProviderFeature` and `MixinZeroExBridge`",
                "pr": 85
            }
        ],
        "timestamp": 1608105788
    },
    {
        "version": "0.12.0",
        "changes": [
            {
                "note": "Add test for selector collisions on the proxy",
                "pr": 74
            },
            {
                "note": "Move tooling out into `@0x/protocol-utils`.",
                "pr": 76
            }
        ],
        "timestamp": 1607485227
    },
    {
        "timestamp": 1607381756,
        "version": "0.11.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.11.0",
        "changes": [
            {
                "note": "Turn `LibTokenSpender` into `FixinTokenSpender`",
                "pr": 38
            },
            {
                "note": "Use bloom filters to check if a token is greedy and do not optimistically fall through transferFrom() if so",
                "pr": 38
            },
            {
                "note": "Revert to original proxy implementation",
                "pr": 38
            },
            {
                "note": "Fix incorrect cancel order event param",
                "pr": 38
            },
            {
                "note": "Add a gas limit to first `LibTokenSpender` and `UniswapFeature` transfer",
                "pr": 38
            },
            {
                "note": "Convert metatransactions to use `LibSignature`",
                "pr": 31
            },
            {
                "note": "Add metatransaction support for limit orders",
                "pr": 44
            },
            {
                "note": "Require RFQ orders to specify a transaction origin, and allow approved alternative addresses",
                "pr": 47
            },
            {
                "note": "Do not try to pull all tokens if selling all ETH in `TransformERC20Feature`",
                "pr": 46
            },
            {
                "note": "Remove protocol fees from all RFQ orders and add `taker` field to RFQ orders",
                "pr": 45
            },
            {
                "note": "Fix getRfqOrderInfo() to return status INVALID when missing txOrigin",
                "pr": 50
            },
            {
                "note": "Remove calldata signing functionality",
                "pr": 51
            },
            {
                "note": "Add a permissionless transformer deployer",
                "pr": 55
            },
            {
                "note": "Add Crypto.com to `BridgeAdapter`",
                "pr": 43
            },
            {
                "note": "Use `FeeCollectorController` contract for deploying `FeeCollector`s",
                "pr": 59
            }
        ],
        "timestamp": 1606961263
    },
    {
        "version": "0.10.0",
        "changes": [
            {
                "note": "Add `checkAllowance` flag to LibTokenSpender.spendERC20Tokens",
                "pr": 39
            },
            {
                "note": "Use new `checkAllowance` flag in LiquidityProviderFeature, TransformERC20Feature, and MetaTransactionsFeature",
                "pr": 39
            },
            {
                "note": "Add native orders features",
                "pr": 27
            }
        ],
        "timestamp": 1605763885
    },
    {
        "version": "0.9.0",
        "changes": [
            {
                "note": "Rewrite the ZeroEx contract in Yul",
                "pr": 23
            },
            {
                "note": "Update LiquidityProviderFeature to use off-chain registry and sandbox",
                "pr": 16
            },
            {
                "note": "Update ILiquidityProvider interface",
                "pr": 16
            },
            {
                "note": "Update ProtocolFeeUnfunded event to emit order hash",
                "pr": 16
            }
        ],
        "timestamp": 1605302002
    },
    {
        "version": "0.8.0",
        "changes": [
            {
                "note": "Trust LP boughtAmount return value",
                "pr": 29
            }
        ],
        "timestamp": 1604385937
    },
    {
        "version": "0.7.0",
        "changes": [
            {
                "note": "Change `ProtocolFeeUnfunded` event in FQT",
                "pr": 28
            },
            {
                "note": "Use new PLP interface in FQT.",
                "pr": 28
            }
        ],
        "timestamp": 1604376968
    },
    {
        "version": "0.6.0",
        "changes": [
            {
                "note": "Add support for collecting protocol fees in ETH or WETH",
                "pr": 2
            },
            {
                "note": "Add `LibSignature` library",
                "pr": 21
            },
            {
                "note": "Add `LimitOrdersFeature`",
                "pr": 27
            }
        ],
        "timestamp": 1604355662
    },
    {
        "timestamp": 1603851023,
        "version": "0.5.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.5.0",
        "changes": [
            {
                "note": "Add `Swerve`, `SnowSwap`, `DODO` and `SushiSwap` into FQT",
                "pr": 7
            }
        ],
        "timestamp": 1603833198
    },
    {
        "version": "0.4.0",
        "changes": [
            {
                "note": "Use the exchange proxy as the primary allowance target",
                "pr": 3
            }
        ],
        "timestamp": 1603487270
    },
    {
        "version": "0.3.0",
        "changes": [
            {
                "note": "Internal audit fixes",
                "pr": 2657
            },
            {
                "note": "Add refund mechanism to meta-transactions",
                "pr": 2657
            },
            {
                "note": "Pass sender address to transformers",
                "pr": 2657
            },
            {
                "note": "Refund unused protocol fees to `refundReceiver` in FQT",
                "pr": 2657
            },
            {
                "note": "Fix `TransformerDeployer.kill()` calling the wrong `die()` interface.",
                "pr": 2624
            },
            {
                "note": "Address CD post-audit feedback",
                "pr": 2657
            },
            {
                "note": "Add `LogMetadataTransformer`",
                "pr": 2657
            },
            {
                "note": "Rename all feature contracts to have `Feature` suffix",
                "pr": 2657
            },
            {
                "note": "Return `IZeroExContract` in `fullMigrateAsync()`",
                "pr": 2657
            },
            {
                "note": "Add taker address enforcement to RFQT orders in FQT",
                "pr": 2692
            },
            {
                "note": "All calldata is valid if quote signer is unset in `TransformERC20`",
                "pr": 2692
            },
            {
                "note": "Add updated Kyber and Mooniswap rollup to FQT",
                "pr": 2692
            },
            {
                "note": "Add `UniswapFeature`",
                "pr": 2703
            },
            {
                "note": "Fix versioning (`_encodeVersion()`) bug",
                "pr": 2703
            },
            {
                "note": "Added LiquidityProviderFeature",
                "pr": 2691
            },
            {
                "note": "Added `Shell` into FQT",
                "pr": 2722
            },
            {
                "note": "Added `CREAM` into FQT",
                "pr": 2715
            }
        ],
        "timestamp": 1603265572
    },
    {
        "version": "0.2.0",
        "changes": [
            {
                "note": "Export migration tools",
                "pr": 2612
            },
            {
                "note": "Export `AffiliateFeeTransformerContract`",
                "pr": 2622
            },
            {
                "note": "Add `MetaTransactions` and `SignatureValidator` features",
                "pr": 2610
            },
            {
                "note": "Update `TransformERC20` and `MetaTransactions` to handle signed calldata.",
                "pr": 2626
            }
        ],
        "timestamp": 1594788383
    },
    {
        "timestamp": 1592969527,
        "version": "0.1.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.1.0",
        "changes": [
            {
                "note": "Create this package",
                "pr": 2540
            },
            {
                "note": "Introduce fill `TransformERC20` feature.",
                "pr": 2545
            },
            {
                "note": "Fill Bridges directly in `FillQuoteTransformer`.",
                "pr": 2608
            }
        ]
    }
]
