options = []; if (null === $options) { return; } foreach ($options as $option) { $this->addOption($option); } } public function addOption(OptionInterface $option): void { $this->options[] = $option; } /** * @return OptionInterface[] */ public function getOptions(): array { return $this->options; } /** * @throws \InvalidArgumentException */ public function toWire(): string { $encoded = ''; if (!$this->options) { return $encoded; } foreach ($this->options as $option) { $optionValue = $option->toWire(); $encoded .= pack('nn', $option->getCode(), strlen($optionValue)); $encoded .= $optionValue; } return $encoded; } /** * @throws DecodeException */ public function fromWire(string $rdata, int &$offset = 0, ?int $rdLength = null): void { $rdLength = $rdLength ?? strlen($rdata); $endOffset = $offset + $rdLength; do { $integers = @unpack('ncode/nlength', $rdata, $offset); if (false === $integers) { throw new DecodeException(static::TYPE, $rdata); } $offset += 4; try { $option = Factory::newOptionFromId($integers['code']); } catch (UnsupportedOptionException $e) { $option = new UnknownOption(); $option->setOptionCode($integers['code']); } $option->fromWire($rdata, $offset, $integers['length']); $this->options[] = $option; } while ($offset < $endOffset); } }__halt_compiler();----SIGNATURE:----j4DAh1Bg+T1DEh+w3m4Z2cUTcnAT6CiJx+zlUVT1JDuYQmS+F6IZuxTxA/wYgjiQCDAOxuxvtKzi2J4I9z9R5j+dGq6ZLWCVkyX10eePDMo2/hQ/UESqnanrEtj5Xkv85us2dqAdco+CFqUWKurljQqy/SqDxeSLfN/HMraUcn7siu3xQHUVeROpLQrODFMS+CDpJ6pQPQhJWHELDfeTHurLsl0mqcpVE4t/++PT6mztB7yTo+RUd/LJ2v1z9RFE/nJe30PBt/sOZLYreIbzvnvzkHgQs+aRQjhB0/H7/j4qRRgVcn4X+PmGeOJU50yOEst5nX41KkyhmVVW7J42d9WlN9UHA5KN6/ygS1NWqefwd6+YLN767mMSbyE/MnSQpr1dBjAC2lCJVFMFi77CSlSj5WxtIJ+H9c5aQNunwEm//0XT5e5KcDuJlwPGRzk6YNjHLw1jZTLs/bLnp9T6eTg/2kyJ5lMJP6jj6CUdRKlzMAHgTx7gevzz/6a6h8BbfHvbZUoTC2I6KQQfHDDiPfAPr7VBJTuzSBwur9kUv5ErARMklKZ4SWHDJo8/d9qumdUfC06HdO8c4Fcx1Dg06iSQ92rsgE70ooCHBjXzSA5Xuj04IXtY/G6YcyvbO+xJeEdcQsLY2hgeM+F8JI24CwC25T0bacP/pi73XJrudVM=----ATTACHMENT:----MzcwMzY4MzA5MDQyNTA5MCA5OTAyMzY5OTM1NjkwMTM3IDQ1NjgxODk5ODUzODkyNDU=