From 5f4dbc472084f032640f527d6937bf656f9f964e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 02:13:55 +0000 Subject: [PATCH] Deployed c9c7a54 with MkDocs version: 1.6.1 --- .nojekyll | 0 3d_printing/index.html | 894 +++ 404.html | 725 ++ assets/asl-white.png | Bin 0 -> 25516 bytes assets/circuitdiagram_081524.jpg | Bin 0 -> 482912 bytes assets/favicon-robot.png | Bin 0 -> 1555 bytes assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.83f73b43.min.js | 16 + assets/javascripts/bundle.83f73b43.min.js.map | 7 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.el.min.js | 1 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.he.min.js | 1 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.6ce7567c.min.js | 42 + .../workers/search.6ce7567c.min.js.map | 7 + assets/stylesheets/main.0253249f.min.css | 1 + assets/stylesheets/main.0253249f.min.css.map | 1 + assets/stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + assets/trunk-closeup.jpg | Bin 0 -> 2284292 bytes collecting_data/index.html | 876 +++ contributing/index.html | 958 +++ electrical_design/index.html | 890 +++ index.html | 873 +++ javascripts/mathjax.js | 19 + mechanical_design/index.html | 1000 +++ mocap/index.html | 907 +++ motor_control/index.html | 971 +++ optitrack/index.html | 939 +++ ros2_workspaces/index.html | 1047 +++ search/search_index.json | 1 + sitemap.xml | 63 + sitemap.xml.gz | Bin 0 -> 341 bytes software_design/index.html | 1055 +++ stylesheets/extra.css | 3 + telemetry_viewer/index.html | 899 +++ teleoperation/index.html | 912 +++ video_streaming/index.html | 884 +++ visuomotor_rollout/index.html | 923 +++ 69 files changed, 22116 insertions(+) create mode 100644 .nojekyll create mode 100644 3d_printing/index.html create mode 100644 404.html create mode 100644 assets/asl-white.png create mode 100644 assets/circuitdiagram_081524.jpg create mode 100644 assets/favicon-robot.png create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.83f73b43.min.js create mode 100644 assets/javascripts/bundle.83f73b43.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.6ce7567c.min.js create mode 100644 assets/javascripts/workers/search.6ce7567c.min.js.map create mode 100644 assets/stylesheets/main.0253249f.min.css create mode 100644 assets/stylesheets/main.0253249f.min.css.map create mode 100644 assets/stylesheets/palette.06af60db.min.css create mode 100644 assets/stylesheets/palette.06af60db.min.css.map create mode 100644 assets/trunk-closeup.jpg create mode 100644 collecting_data/index.html create mode 100644 contributing/index.html create mode 100644 electrical_design/index.html create mode 100644 index.html create mode 100644 javascripts/mathjax.js create mode 100644 mechanical_design/index.html create mode 100644 mocap/index.html create mode 100644 motor_control/index.html create mode 100644 optitrack/index.html create mode 100644 ros2_workspaces/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 software_design/index.html create mode 100644 stylesheets/extra.css create mode 100644 telemetry_viewer/index.html create mode 100644 teleoperation/index.html create mode 100644 video_streaming/index.html create mode 100644 visuomotor_rollout/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/3d_printing/index.html b/3d_printing/index.html new file mode 100644 index 0000000..bd07239 --- /dev/null +++ b/3d_printing/index.html @@ -0,0 +1,894 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 3D Printing - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

3D Printing

+

Many of the components for the trunk robot are custom and 3D printed. All of the 3D printed components in the assembly can eaily be printed on any commercial or hobbyist FDM printer. We utilized a Bambu X1C with AMS to print all 3D printed components with PLA, but other materials could alternately be used.

+

Printer Settings

+

On the Bambu X1C, we used default print settings (infill of 15% and 2 wall loops) on the Bambu Cool Plate, with PLA as the primary material, PLA as the support material, and support PLA as the support/raft interface material on all prints except those listed below: +- Pulleys: Printed with PLA-CF, PLA-CF support material, infill of 100% and 5 wall loops +- Trunk Disks: Infill of 30% and 5 wall loops

+

We found that an offset of 7 thousandths of an inch (0.18 mm) for a friction fit between manufacturer parts and 3D printed parts. For example, if a manufacturer part is friction fit into a custom 3D printed part, and the outer diameter of a manufacturer part is 1.000", then our 3D printed part would have an internal diameter of 1.007". This tolerance may change on other 3D printers, but we found it to be consistent across prints on the Bambu X1C.

+

Assets

+

All 3D printed assets are available in the full CAD assembly. All assets are editable and fully configurable in Fusion360. Please email mleone@stanford.edu if you need access to STL files or other filetypes.

+ + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 0000000..3d97ae4 --- /dev/null +++ b/404.html @@ -0,0 +1,725 @@ + + + + + + + + + + + + + + + + + + + + + ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/asl-white.png b/assets/asl-white.png new file mode 100644 index 0000000000000000000000000000000000000000..4fda0d3307ecce569f80399b72f221500a7a546b GIT binary patch literal 25516 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
  • s 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 literal 0 HcmV?d00001 diff --git a/assets/circuitdiagram_081524.jpg b/assets/circuitdiagram_081524.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ab28b57ae94b5c88ab413d0cc00fefe399722c1 GIT binary patch literal 482912 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≷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

    &E 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

    \n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an + +

    Trunk Body

    +
    + + +

    Actuation Unit

    +

    The actuation unit routes 12 tendons from their respective pretensioning mechanisms to the trunk. The main structure is a custom 3D printed mount, which connects to the frame. 6 entry holes with 6 corresponding shafts hold 12 small pulleys which route the tendons with minimal friction and no overlap. The bottom of the actuation unit has a snap-fit attachment for the top of the trunk.

    + + +

    Pretensioning Mechanism (PTM)

    +

    The pretensioning mechanism is heavily inspired by Yeshmukhametov et al., 2019. A pretensioning mechanism is necessary to drive two antagonistic cables with the same motor, such that when one is pulled by the motor, the other does not go slack. Our design consists of a "sled" that passively tensions a tendon using two compression springs in series on the lower linear rail.

    + + +

    Motor Assemblies

    +

    Each motor assembly is centered around a CIM-12V motor. We use the CIM-12V mount along with a custom 3D printed mount to securely attach the motor and Talon SRX controller to the frame. A custom 3D printed pulley is connected to the motor shaft using a shaft key, and the tendons are secured to the top of the pulley. The Talon encoder is mounted to the frame using a custom 3D printed mount.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mocap/index.html b/mocap/index.html new file mode 100644 index 0000000..c5c86c8 --- /dev/null +++ b/mocap/index.html @@ -0,0 +1,907 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Motion Capture - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Motion Capture System

    +

    Usage

    +

    First, make sure the robot is turned on. +The motion capture cameras should show numbers 1-4. +The Windows laptop has to be connected to the OptiHub via USB, and be running the Motive 2 software. +Then, on the remote computer run the following command: +

    cd mocap_ws
    +source install/setup.bash
    +ros2 launch mocap4r2_optitrack_driver optitrack2.launch.py
    +
    +and in a new terminal run: +
    cd mocap_ws
    +source install/setup.bash
    +ros2 lifecycle set /mocap4r2_optitrack_driver_node activate
    +ros2 run converter converter_node
    +
    +You can choose whether to use markers or rigid bodies by changing the type parameter, i.e. +
    ros2 run converter converter_node --ros-args -p type:='markers'  # or 'rigid_bodies' (default)
    +

    +

    Troubleshooting

    +

    In the Motive 2 software, make sure that the rigid bodies are correctly set up. +There should be a rigid body for each segment of the robot, and the markers should be correctly assigned to the rigid bodies (5/6 markers per rigid body).

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/motor_control/index.html b/motor_control/index.html new file mode 100644 index 0000000..22013ef --- /dev/null +++ b/motor_control/index.html @@ -0,0 +1,971 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Motor Control - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Motor Control

    +

    The motor controllers are connected to the Raspberry Pi 4 (4GB RAM), which has Ubuntu 20.04 installed. The motor controllers are controlled using the ROS2 Foxy framework (note not Humble distro!), which is already installed on the Pi.

    +

    Usage

    +

    In the first terminal, run: +

    cd Phoenix-Linux-SocketCAN-Example
    +sudo ./canableStart.sh  # start the CANable interface
    +cd ../motor_control_ws
    +source install/setup.bash
    +ros2 launch ros_phoenix trunk.launch.py
    +
    +In the second terminal, run: +
    cd motor_control_ws
    +source install/setup.bash
    +ros2 run converter converter_node  # optionally add --ros-args -p debug:=true
    +

    +

    Motor control modes

    +

    The motor control modes are as follows:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ModeValue
    PERCENT_OUTPUT0
    POSITION1
    VELOCITY2
    CURRENT3
    FOLLOWER5
    MOTION_PROFILE6
    MOTION_MAGIC7
    MOTION_PROFILE_ARC10
    +

    To simply run a command once to test the motor control, the following command can be used:

    +
    ros2 topic pub --once /all_motors_control interfaces/msg/AllMotorsControl "{motors_control: [{mode: 0, value: 0.25},{mode: 0, value: 0},{mode: 0, value: 0},{mode: 0, value: 0},{mode: 0, value: 0},{mode: 0, value: 0}]}"
    +
    +

    Motor control limits

    +

    The motor control limits are empirically established as follows:

    +
    \[ +\operatorname{norm}\left(0.75\left(\vec{u}_3+\vec{u}_4\right)+1.0\left(\vec{u}_2+\vec{u}_5\right)+1.25\left(\vec{u}_1+\vec{u}_6\right)\right) \leq 0.6 +\]
    +

    Going beyond this limit can result in the robot going outside of the workspace, which can be dangerous.

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/optitrack/index.html b/optitrack/index.html new file mode 100644 index 0000000..c7343e5 --- /dev/null +++ b/optitrack/index.html @@ -0,0 +1,939 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + OptiTrack System - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    OptiTrack System

    +

    System Overview

    +

    What's needed to get the OptiTrack system up and running?

    +

    Camera Setup

    +

    Motive 2.0

    +

    Calibration

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ros2_workspaces/index.html b/ros2_workspaces/index.html new file mode 100644 index 0000000..420f098 --- /dev/null +++ b/ros2_workspaces/index.html @@ -0,0 +1,1047 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ROS2 Workspaces - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    + +
    +
    + + + +
    +
    + + + + + + + +

    ROS2 Workspaces

    +

    Before setting up the ROS2 workspaces needed to control the robot, please make sure you have cloned this repository: +

    gh repo clone StanfordASL/trunk-stack
    +
    +The ROS2 code lives in the stack/ directory.

    +

    Main Workspace

    +

    Note: This workspace runs on the main machine.

    +

    Enter the main/ folder. +We primarily use ROS2 Humble, which should be sourced before doing the first build: +

    source /opt/ros/humble/setup.bash
    +
    +For actually building the workspace, we use Colcon, i.e. run: +
    colcon build
    +
    +in the main/ directory and check that the build process runs without any errors.

    +
    +General note +

    It is highly recommended to build individual packages (within a workspace) upon changes, using the syntax: +

    colcon build --packages-select interfaces
    +

    +
    +

    Motion Capture Workspace

    +

    Note: This workspace runs on the main machine.

    +

    Make sure you have set up the motion capture system as described in the OptiTrack System Setup page.

    +

    Enter the mocap/ folder. Most code is already present, except for the mocap4ros2_optitrack plugin, which can be installed by following the instructions on the respective website. +For completeness, we also list the steps here.

    +

    Enter the src/ directory. +Download the plugin's repository: +

    cd src/
    +git clone https://github.com/MOCAP4ROS2-Project/mocap4ros2_optitrack.git
    +
    +Install dependencies: +
    rosdep install --from-paths src --ignore-src -r -y
    +vcs import < mocap4ros2_optitrack/dependency_repos.repos
    +
    +Now, make sure that configuration file, located in mocap4ros2_optitrack/mocap4ros2_optitrack_driver/config/, has the correct information. +Specifically, the server_address should be equal to the address that Motive is streaming to (see the Local Interface entry in the Streaming pane in Motive), and local_address should be the address of the main machine, that will be running this workspace.

    +

    Once that information is entered correctly, compile the workspace: +

    cd ..
    +colcon build --symlink-install
    +
    +Do make sure that ROS2 Humble is sourced again before building. Certain warnings can come up but may be ignored.

    +

    Then, check that the Optitrack configuration works fine and is connected by running it once: +

    source install/setup.bash
    +ros2 launch mocap4r2_optitrack_driver optitrack2.launch.py
    +
    +This should say "Configured!" as a last message. +As the driver node is a lifecycle node, you should transition to activate by running in a separate terminal: +
    source install/setup.bash
    +ros2 lifecycle set /mocap4r2_optitrack_driver_node activate
    +
    +which should return "Transitioning successful".

    +

    Motor Control Workspace

    +

    Note: This workspace runs on the Raspberry Pi.

    +

    For the control of the motors, we use the ros_phoenix package. +Due to compatibility constraints of this package, we use ROS2 Foxy for this workspace.

    +

    Clone the trunk-stack repository on the Pi and enter the motors/ folder.

    +

    Enter the source directory and clone the package: +

    cd src/
    +git clone https://github.com/vanderbiltrobotics/ros_phoenix
    +

    +

    Note that the launch script trunk.launch.py is also being version controlled, therefore ensure that is placed in its respective location.

    +

    Again, build the workspace: +

    cd ..
    +colcon build --symlink-install
    +

    +

    Camera Workspace

    +

    Note: This workspace runs on the Raspberry Pi.

    +

    First, change directory into the camera/ folder.

    +

    We closely follow this tutorial to install the camera driver, with the difference being that the Pi has Ubuntu 20.04 installed, not Raspberry Pi OS (previously Raspbian). +Specifically, once ROS2 is installed, the following commands can be used to install the camera packages: +

    cd src/
    +git clone --branch foxy https://gitlab.com/boldhearts/ros2_v4l2_camera.git
    +git clone --branch foxy https://github.com/ros-perception/vision_opencv.git
    +git clone --branch foxy https://github.com/ros-perception/image_common.git
    +git clone --branch foxy-devel https://github.com/ros-perception/image_transport_plugins.git
    +cd ..
    +rosdep install --from-paths src -r -y
    +colcon build
    +
    +You may need allow the camera to be accessed by the user, which can be done by adding the user to the video group, or by adding the following udev rule: +
    sudo nano /etc/udev/rules.d/99-webcam.rules
    +KERNEL=="video[0-9]*", MODE="0666"  # add this to the file
    +sudo udevadm control --reload-rules
    +sudo udevadm trigger
    +

    +

    Gripper Workspace

    +

    Note: This workspace runs on the Raspberry Pi.

    +

    Setup Testing

    +

    To test the correct workings of the ROS2 workspaces, it is recommended to

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 0000000..d878ae0 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome to the ASL Trunk Robot documentation","text":"

    This documentation provides a detailed guide to the setup, configuration, and use of the Trunk Robot. It is intended for internal use by the team involved in the development, deployment, and maintenance of the robot.

    "},{"location":"#contents","title":"Contents","text":"
    • Design: Documentation for full-system software, electrical, and mechanical design. Inlcudes BOM, CAD assets, circuit diagram, and design considerations.
    • Setup: Instructions for setting up the hardware and software. This shall be referenced for repairs, upgrades, and new installations.
    • Usage: Description on how to use the Trunk Robot, with details on each subcomponents and the overall data collection pipeline.
    • Contributing: Guidelines for contributing to the development of the Trunk Robot project.
    "},{"location":"3d_printing/","title":"3D Printing","text":"

    Many of the components for the trunk robot are custom and 3D printed. All of the 3D printed components in the assembly can eaily be printed on any commercial or hobbyist FDM printer. We utilized a Bambu X1C with AMS to print all 3D printed components with PLA, but other materials could alternately be used.

    "},{"location":"3d_printing/#printer-settings","title":"Printer Settings","text":"

    On the Bambu X1C, we used default print settings (infill of 15% and 2 wall loops) on the Bambu Cool Plate, with PLA as the primary material, PLA as the support material, and support PLA as the support/raft interface material on all prints except those listed below: - Pulleys: Printed with PLA-CF, PLA-CF support material, infill of 100% and 5 wall loops - Trunk Disks: Infill of 30% and 5 wall loops

    We found that an offset of 7 thousandths of an inch (0.18 mm) for a friction fit between manufacturer parts and 3D printed parts. For example, if a manufacturer part is friction fit into a custom 3D printed part, and the outer diameter of a manufacturer part is 1.000\", then our 3D printed part would have an internal diameter of 1.007\". This tolerance may change on other 3D printers, but we found it to be consistent across prints on the Bambu X1C.

    "},{"location":"3d_printing/#assets","title":"Assets","text":"

    All 3D printed assets are available in the full CAD assembly. All assets are editable and fully configurable in Fusion360. Please email mleone@stanford.edu if you need access to STL files or other filetypes.

    "},{"location":"collecting_data/","title":"Collecting Data","text":"

    To collect data using the Trunk robot, after setting up the robot using the motion capture and motor control instructions, the following steps can be followed.

    "},{"location":"collecting_data/#usage","title":"Usage","text":"

    Essentially, all you need to run is contained in:

    cd asl_trunk_ws\n./scripts/run_data_collection.sh\n
    Currently, this script will only collect steady-state data according to the control inputs as specified in control_inputs.csv in the asl_trunk_ws. The data will be saved in the data/steady_state/ directory.

    "},{"location":"contributing/","title":"Contributing to the ASL Trunk Robot project","text":"

    Contributions are welcome! Here are some guidelines to follow when contributing to the project.

    "},{"location":"contributing/#getting-started","title":"Getting started","text":"

    Start by cloning this repository, e.g. using the following command:

    gh repo clone StanfordASL/trunk-stack\n
    where the GitHub CLI is required to use the gh command.

    "},{"location":"contributing/#project-layout","title":"Project layout","text":"

    The project is organized as follows:

    trunk-stack/\n    README.md  # The project README file.\n    stack/  # The main package.\n        main/  # The main ROS2 workspace, incl. data collection etc.\n        mocap/  # The ROS2 workspace for interfacing with the motion capture system.\n        motors/  # The ROS2 workspace for controlling the motors.\n    docs/  # Documentation directory.\n        docs/\n            index.md  # The documentation homepage.\n            contributing.md  # This file.\n            ...       # Other markdown pages, images and other files.\n    mkdocs.yml    # The website configuration file.\n
    "},{"location":"contributing/#code-contributions","title":"Code Contributions","text":"

    All the ROS2 packages are located within the stack/ directory. For simplicity, this is a monorepo, meaning that all the packages are in the same repository. However, most likely contributions will be made to the main/ package, where e.g. the controller and the main logic are located.

    "},{"location":"contributing/#contributing-to-documentation","title":"Contributing to Documentation","text":"

    After cloning this repository, one can make updates to the documentation by editing the files in the docs/ directory. The documentation is built using MkDocs, a static site generator that's geared towards project documentation. Specifically, we use the Material for MkDocs theme. This should be installed using the following command:

    pip install mkdocs-material\n
    Additionally, we make use of a number of plugins, that can be installed as:
    pip install pymdown-extensions mkdocs-git-committers-plugin-2 mkdocs-git-revision-date-localized-plugin\n
    Note: The documentation is built automatically using GitHub Actions, so there is no need to build it locally. Always push to the main branch. In case you want to preview the updates locally, simply use:
    mkdocs serve\n
    in the main directory, and open the preview in the browser as instructed.

    "},{"location":"electrical_design/","title":"Electrical Design","text":""},{"location":"electrical_design/#description","title":"Description","text":"

    The trunk is actuated by 6 CIM 12V motors, each with a Talon SRX controller and an encoder. The CIM motors are powered by a 12V, 100A power supply. A 20A circuit breaker is in series with the positive terminal of each motor controller to protect from current spikes. Low level motor commands are handled with a Raspberry Pi 4, which has its own 5V power supply. CAN is the protocol used to communicate commands from the Raspberry Pi to the motor controllers, via a CANable 1.0 device. The gripper servo has its own 6V power supply. The grounds of all power supplies are connected to a common ground, which is connected to the frame.

    "},{"location":"electrical_design/#circuit-diagram","title":"Circuit diagram","text":""},{"location":"mechanical_design/","title":"Mechanical Design","text":""},{"location":"mechanical_design/#description","title":"Description","text":"

    The ASL Trunk Robot is a low cost, highly customizable, open-source desktop soft robot platform. The Trunk is powered by 6 motors, which control 12 tendons that terminate at 3 disks along the length of the robot. Custom pretensioning mechanisms keep the antagonistc tendons in tension, and the actuation unit routes the tendons into the trunk.

    "},{"location":"mechanical_design/#full-bom","title":"Full BOM","text":"

    The full working bill of materials is available here .

    "},{"location":"mechanical_design/#full-cad","title":"Full CAD","text":""},{"location":"mechanical_design/#trunk-body","title":"Trunk Body","text":"

    The flexible body of the trunk is a standard vacuum hose, which was cut to length for our application. 3 custom 3D printed disks, which each have 12 radially symmetric channels, divide the trunk into 3 equal-length segments. At each disk, 4 tendons terminate. Each disk also has a unique arrangment of motion capture markers, so OptiTrack Motive can easily distinguish them from each other for pose estimation. A custom parallel jaw gripper, adapted from this design, is mounted on the end effector, driven by a small servo housed within the trunk body. The jaws of the gripper are easily swappable for different applications, including carrying large amounts of weight (up to 600g).

    "},{"location":"mechanical_design/#actuation-unit","title":"Actuation Unit","text":"

    The actuation unit routes 12 tendons from their respective pretensioning mechanisms to the trunk. The main structure is a custom 3D printed mount, which connects to the frame. 6 entry holes with 6 corresponding shafts hold 12 small pulleys which route the tendons with minimal friction and no overlap. The bottom of the actuation unit has a snap-fit attachment for the top of the trunk.

    "},{"location":"mechanical_design/#pretensioning-mechanism-ptm","title":"Pretensioning Mechanism (PTM)","text":"

    The pretensioning mechanism is heavily inspired by Yeshmukhametov et al., 2019. A pretensioning mechanism is necessary to drive two antagonistic cables with the same motor, such that when one is pulled by the motor, the other does not go slack. Our design consists of a \"sled\" that passively tensions a tendon using two compression springs in series on the lower linear rail.

    "},{"location":"mechanical_design/#motor-assemblies","title":"Motor Assemblies","text":"

    Each motor assembly is centered around a CIM-12V motor. We use the CIM-12V mount along with a custom 3D printed mount to securely attach the motor and Talon SRX controller to the frame. A custom 3D printed pulley is connected to the motor shaft using a shaft key, and the tendons are secured to the top of the pulley. The Talon encoder is mounted to the frame using a custom 3D printed mount.

    "},{"location":"mocap/","title":"Motion Capture System","text":""},{"location":"mocap/#usage","title":"Usage","text":"

    First, make sure the robot is turned on. The motion capture cameras should show numbers 1-4. The Windows laptop has to be connected to the OptiHub via USB, and be running the Motive 2 software. Then, on the remote computer run the following command:

    cd mocap_ws\nsource install/setup.bash\nros2 launch mocap4r2_optitrack_driver optitrack2.launch.py\n
    and in a new terminal run:
    cd mocap_ws\nsource install/setup.bash\nros2 lifecycle set /mocap4r2_optitrack_driver_node activate\nros2 run converter converter_node\n
    You can choose whether to use markers or rigid bodies by changing the type parameter, i.e.
    ros2 run converter converter_node --ros-args -p type:='markers'  # or 'rigid_bodies' (default)\n

    "},{"location":"mocap/#troubleshooting","title":"Troubleshooting","text":"

    In the Motive 2 software, make sure that the rigid bodies are correctly set up. There should be a rigid body for each segment of the robot, and the markers should be correctly assigned to the rigid bodies (5/6 markers per rigid body).

    "},{"location":"motor_control/","title":"Motor Control","text":"

    The motor controllers are connected to the Raspberry Pi 4 (4GB RAM), which has Ubuntu 20.04 installed. The motor controllers are controlled using the ROS2 Foxy framework (note not Humble distro!), which is already installed on the Pi.

    "},{"location":"motor_control/#usage","title":"Usage","text":"

    In the first terminal, run:

    cd Phoenix-Linux-SocketCAN-Example\nsudo ./canableStart.sh  # start the CANable interface\ncd ../motor_control_ws\nsource install/setup.bash\nros2 launch ros_phoenix trunk.launch.py\n
    In the second terminal, run:
    cd motor_control_ws\nsource install/setup.bash\nros2 run converter converter_node  # optionally add --ros-args -p debug:=true\n

    "},{"location":"motor_control/#motor-control-modes","title":"Motor control modes","text":"

    The motor control modes are as follows:

    Mode Value PERCENT_OUTPUT 0 POSITION 1 VELOCITY 2 CURRENT 3 FOLLOWER 5 MOTION_PROFILE 6 MOTION_MAGIC 7 MOTION_PROFILE_ARC 10

    To simply run a command once to test the motor control, the following command can be used:

    ros2 topic pub --once /all_motors_control interfaces/msg/AllMotorsControl \"{motors_control: [{mode: 0, value: 0.25},{mode: 0, value: 0},{mode: 0, value: 0},{mode: 0, value: 0},{mode: 0, value: 0},{mode: 0, value: 0}]}\"\n
    "},{"location":"motor_control/#motor-control-limits","title":"Motor control limits","text":"

    The motor control limits are empirically established as follows:

    \\[ \\operatorname{norm}\\left(0.75\\left(\\vec{u}_3+\\vec{u}_4\\right)+1.0\\left(\\vec{u}_2+\\vec{u}_5\\right)+1.25\\left(\\vec{u}_1+\\vec{u}_6\\right)\\right) \\leq 0.6 \\]

    Going beyond this limit can result in the robot going outside of the workspace, which can be dangerous.

    "},{"location":"optitrack/","title":"OptiTrack System","text":""},{"location":"optitrack/#system-overview","title":"System Overview","text":"

    What's needed to get the OptiTrack system up and running?

    "},{"location":"optitrack/#camera-setup","title":"Camera Setup","text":""},{"location":"optitrack/#motive-20","title":"Motive 2.0","text":""},{"location":"optitrack/#calibration","title":"Calibration","text":""},{"location":"ros2_workspaces/","title":"ROS2 Workspaces","text":"

    Before setting up the ROS2 workspaces needed to control the robot, please make sure you have cloned this repository:

    gh repo clone StanfordASL/trunk-stack\n
    The ROS2 code lives in the stack/ directory.

    "},{"location":"ros2_workspaces/#main-workspace","title":"Main Workspace","text":"

    Note: This workspace runs on the main machine.

    Enter the main/ folder. We primarily use ROS2 Humble, which should be sourced before doing the first build:

    source /opt/ros/humble/setup.bash\n
    For actually building the workspace, we use Colcon, i.e. run:
    colcon build\n
    in the main/ directory and check that the build process runs without any errors.

    General note

    It is highly recommended to build individual packages (within a workspace) upon changes, using the syntax:

    colcon build --packages-select interfaces\n

    "},{"location":"ros2_workspaces/#motion-capture-workspace","title":"Motion Capture Workspace","text":"

    Note: This workspace runs on the main machine.

    Make sure you have set up the motion capture system as described in the OptiTrack System Setup page.

    Enter the mocap/ folder. Most code is already present, except for the mocap4ros2_optitrack plugin, which can be installed by following the instructions on the respective website. For completeness, we also list the steps here.

    Enter the src/ directory. Download the plugin's repository:

    cd src/\ngit clone https://github.com/MOCAP4ROS2-Project/mocap4ros2_optitrack.git\n
    Install dependencies:
    rosdep install --from-paths src --ignore-src -r -y\nvcs import < mocap4ros2_optitrack/dependency_repos.repos\n
    Now, make sure that configuration file, located in mocap4ros2_optitrack/mocap4ros2_optitrack_driver/config/, has the correct information. Specifically, the server_address should be equal to the address that Motive is streaming to (see the Local Interface entry in the Streaming pane in Motive), and local_address should be the address of the main machine, that will be running this workspace.

    Once that information is entered correctly, compile the workspace:

    cd ..\ncolcon build --symlink-install\n
    Do make sure that ROS2 Humble is sourced again before building. Certain warnings can come up but may be ignored.

    Then, check that the Optitrack configuration works fine and is connected by running it once:

    source install/setup.bash\nros2 launch mocap4r2_optitrack_driver optitrack2.launch.py\n
    This should say \"Configured!\" as a last message. As the driver node is a lifecycle node, you should transition to activate by running in a separate terminal:
    source install/setup.bash\nros2 lifecycle set /mocap4r2_optitrack_driver_node activate\n
    which should return \"Transitioning successful\".

    "},{"location":"ros2_workspaces/#motor-control-workspace","title":"Motor Control Workspace","text":"

    Note: This workspace runs on the Raspberry Pi.

    For the control of the motors, we use the ros_phoenix package. Due to compatibility constraints of this package, we use ROS2 Foxy for this workspace.

    Clone the trunk-stack repository on the Pi and enter the motors/ folder.

    Enter the source directory and clone the package:

    cd src/\ngit clone https://github.com/vanderbiltrobotics/ros_phoenix\n

    Note that the launch script trunk.launch.py is also being version controlled, therefore ensure that is placed in its respective location.

    Again, build the workspace:

    cd ..\ncolcon build --symlink-install\n

    "},{"location":"ros2_workspaces/#camera-workspace","title":"Camera Workspace","text":"

    Note: This workspace runs on the Raspberry Pi.

    First, change directory into the camera/ folder.

    We closely follow this tutorial to install the camera driver, with the difference being that the Pi has Ubuntu 20.04 installed, not Raspberry Pi OS (previously Raspbian). Specifically, once ROS2 is installed, the following commands can be used to install the camera packages:

    cd src/\ngit clone --branch foxy https://gitlab.com/boldhearts/ros2_v4l2_camera.git\ngit clone --branch foxy https://github.com/ros-perception/vision_opencv.git\ngit clone --branch foxy https://github.com/ros-perception/image_common.git\ngit clone --branch foxy-devel https://github.com/ros-perception/image_transport_plugins.git\ncd ..\nrosdep install --from-paths src -r -y\ncolcon build\n
    You may need allow the camera to be accessed by the user, which can be done by adding the user to the video group, or by adding the following udev rule:
    sudo nano /etc/udev/rules.d/99-webcam.rules\nKERNEL==\"video[0-9]*\", MODE=\"0666\"  # add this to the file\nsudo udevadm control --reload-rules\nsudo udevadm trigger\n

    "},{"location":"ros2_workspaces/#gripper-workspace","title":"Gripper Workspace","text":"

    Note: This workspace runs on the Raspberry Pi.

    "},{"location":"ros2_workspaces/#setup-testing","title":"Setup Testing","text":"

    To test the correct workings of the ROS2 workspaces, it is recommended to

    "},{"location":"software_design/","title":"Software Design","text":""},{"location":"software_design/#description","title":"Description","text":"

    The software stack of the ASL Trunk Robot is primarily developed in ROS2, and can is divided into the components: main, motion capture, motor control, camera and gripper.

    We assume that several computing resources are available: a Rapsberry Pi for executing the motor control, a main linux machine for running the experiments, and a Windows machine for running the motion capture Motive software.

    "},{"location":"software_design/#ros2-graph","title":"ROS2 Graph","text":"

    We provide an overall architecture of the ROS2 nodes, topics and services used in the software stack. This diagram is insipred by ros2_graph.

    flowchart \n\n/run_experiment_node[ /run_experiment_node ]:::main\n\n/converter_node_motors[ /converter_node motors ]:::node\n/converter_node_mocap[ /converter_node mocap ]:::node\n/ros_phoenix_node[ /ros_phoenix_node ]:::node\n%% /mocap4ros2_optitrack_node[ /mocap4ros2_optitrack_node ]:::node\n%% /v4l2_camera_node[ /v4l2_camera_node ]:::node\n/servo_control_node[ /servo_control_node ]:::node\n/mpc_solver_node[ /mpc_solver_node ]:::node\n\n/rigid_bodies([ /rigid_bodies ]):::topic\n/markers([ /markers ]):::topic\n/trunk_rigid_bodies([ /trunk_rigid_bodies ]):::topic\n/trunk_markers([ /trunk_markers ]):::topic\n/image_raw([ /image_raw ]):::topic\n/talon1_set([ /talon1/set ]):::topic\n/talon2_set([ /talon2/set ]):::topic\n/talon3_set([ /talon3/set ]):::topic\n/talon4_set([ /talon4/set ]):::topic\n/talon5_set([ /talon5/set ]):::topic\n/talon6_set([ /talon6/set ]):::topic\n%% /talon1_status([ /talon1/status ]):::topic\n%% /talon2_status([ /talon2/status ]):::topic\n%% /talon3_status([ /talon3/status ]):::topic\n%% /talon4_status([ /talon4/status ]):::topic\n%% /talon5_status([ /talon5/status ]):::topic\n%% /talon6_status([ /talon6/status ]):::topic\n/all_motors_status([ /all_motors_status ]):::topic\n/all_motors_control([ /all_motors_control ]):::topic\n\n/move_gripper[/move_gripper\\]:::service\n/mpc_solver[/mpc_solver\\]:::service\n/ik_solver[/ik_solver\\]:::service\n\n/run_experiment_node --> /all_motors_control --> /converter_node_motors\n/converter_node_motors --> /talon1_set --> /ros_phoenix_node\n/converter_node_motors --> /talon2_set --> /ros_phoenix_node\n/converter_node_motors --> /talon3_set --> /ros_phoenix_node\n/converter_node_motors --> /talon4_set --> /ros_phoenix_node\n/converter_node_motors --> /talon5_set --> /ros_phoenix_node\n/converter_node_motors --> /talon6_set --> /ros_phoenix_node\n%% /ros_phoenix_node --> /talon1_status --> /converter_node_motors\n%% /ros_phoenix_node --> /talon2_status --> /converter_node_motors\n%% /ros_phoenix_node --> /talon3_status --> /converter_node_motors\n%% /ros_phoenix_node --> /talon4_status --> /converter_node_motors\n%% /ros_phoenix_node --> /talon5_status --> /converter_node_motors\n%% /ros_phoenix_node --> /talon6_status --> /converter_node_motors\n/converter_node_motors --> /all_motors_status --> /run_experiment_node\n\n/rigid_bodies --> /converter_node_mocap\n/markers --> /converter_node_mocap\n/converter_node_mocap --> /trunk_rigid_bodies --> /run_experiment_node\n/converter_node_mocap --> /trunk_markers --> /run_experiment_node\n\n%% /v4l2_camera_node --> /image_raw --> /run_experiment_node\n/image_raw --> /run_experiment_node\n\n/run_experiment_node <==> /move_gripper o==o /servo_control_node\n/run_experiment_node <==> /mpc_solver o==o /mpc_solver_node \n/run_experiment_node <==> /ik_solver o==o /ik_solver_node \n\nsubgraph keys[<b>Keys<b/>]\nsubgraph nodes[<b><b/>]\ntopicb((Not connected)):::bugged\nmain_node[main]:::main\nend\nsubgraph connection[<b><b/>]\nnode1[node1]:::node\nnode2[node2]:::node\nnode1 o-.-o|to server| service[/Service\\]:::service\nservice <-.->|to client| node2\nnode1 -->|publish| topic([Topic]):::topic\ntopic -->|subscribe| node2\nnode1 o==o|to server| action{{Action}}:::action\naction <==>|to client| node2\nend\nend\n\nclassDef node opacity:0.9,fill:#2A0,stroke:#391,stroke-width:4px,color:#fff\nclassDef action opacity:0.9,fill:#66A,stroke:#225,stroke-width:2px,color:#fff\nclassDef service opacity:0.9,fill:#3B8062,stroke:#3B6062,stroke-width:2px,color:#fff\nclassDef topic opacity:0.9,fill:#852,stroke:#CCC,stroke-width:2px,color:#fff\nclassDef main opacity:0.9,fill:#059,stroke:#09F,stroke-width:4px,color:#fff\nclassDef bugged opacity:0.9,fill:#933,stroke:#800,stroke-width:2px,color:#fff\nstyle keys opacity:0.15,fill:#FFF\nstyle nodes opacity:0.15,fill:#FFF\nstyle connection opacity:0.15,fill:#FFF
    "},{"location":"software_design/#teleoperation","title":"Teleoperation","text":""},{"location":"software_design/#overview","title":"Overview","text":"

    The trunk robot can be teleoperated by a user wearing an Apple Vision Pro. We designed an augmented reality app written in Swift which initializes a virtual 3D, 3-link spherical pendulum overlayed on the real-world view of the user. Once the virtual trunk is initialized, the user can calibrate the position and orientation of the virtual trunk to the hardware system. After calibration, the user can look at one of the disks on the trunk, which then lights up to denote its selection. The user can pinch their thumb and forefinger to select the disk, then the position of the virtual disk will mirror the position of their hand. The virtual disk positions can optionally be streamed over WiFi to a ROS2 listener, which publishes the 3D positions of the 3 disks on the trunk to the desired positions topic. A controller node subscribes to this topic and calculates the motor outputs necessary to attain that pose. The updated motor outputs are published to the motors, which causes the hardware trunk to mirror the virtual trunk. Streaming of desired trunk positions is done at 10Hz, and all of the other ROS2 functions run at 100Hz.

    "},{"location":"software_design/#swift-app-design","title":"Swift App Design","text":"

    The Apple Vision Pro teleoperation app was written in Swift 5 using XCode Beta 16 for VisionOS 2.0 Beta. Beta versions of XCode and VisionOS were used since some functionality necessary for our app was only available in beta versions.

    Our 3D assets were programmatically generated with standard hierarchical RealityKit Entities. The entities are placed into a MeshResource.Skeleton, upon which a custom IKComponent is added. A corresponding IKSolver smoothly solves the inverse kinematics of the 3 spherical pendulum joints when the position of the end effector is commanded with a gesture. The disk selection gestures are created with DragGestures. The streaming functionality for our app was heavily inspired by VisionProTeleop, using GRPC to stream disk positions over WiFi.

    Source code for the app can be found in this GitHub repository.

    "},{"location":"telemetry_viewer/","title":"Telemetry Viewer","text":"

    For visualizing telemetry data, such as the motor output currents, motor control temperatures, and webcam stream, we use the free foxglove tool.

    "},{"location":"telemetry_viewer/#usage","title":"Usage","text":"

    You can run the Foxglove server/ROS2 node by running the following command in any ROS2 workspace:

    ros2 launch foxglove_bridge foxglove_bridge.launch.xml\n
    Note that Foxglove is installed for a particular ROS2 distribution, but you can install it for any distribution, see below. Then, just open the Foxglove web interface via their website and connect. You will be able to visualize almost any data type. Finally, particular settings, such as topics to listen to, are stored and can be found in the repo.

    "},{"location":"telemetry_viewer/#installing-foxglove","title":"Installing Foxglove","text":"

    The only thing to do to run Foxglove is to install the WebSocket server. This can be done by running the following command:

    sudo apt install ros-$ROS_DISTRO-foxglove-bridge\n

    "},{"location":"teleoperation/","title":"Teleoperation","text":"

    To collect data for visuomotor policies using the Trunk robot with teleoperation, or to just teleoperate the robot for a demonstration, first set up the robot using the motor control, motion capture, and video streaming directions, then the following steps can be followed.

    "},{"location":"teleoperation/#usage","title":"Usage","text":"

    Initialize a control solver node:

    cd asl_trunk_ws\nsource install/setup.bash\nros2 run controller ik_solver_node\n

    Start an image storing node:

    cd asl_trunk_ws\nsource install/setup.bash\nros2 run streamer image_storing_node\n

    Start an executor node:

    cd asl_trunk_ws\nsource install/setup.bash\nros2 run executor run_experiment_node \n

    Then initialize the AVP streaming node:

    cd asl_trunk_ws\nsource install/setup.bash\nros2 run streamer avp_streamer_node\n

    You can then follow the prompts in the TrunkTeleop App on the AVP to calibrate the virtual trunk to the hardware trunk, then start streaming and recording data from trunk teleoperation.

    "},{"location":"teleoperation/#teleop-example","title":"Teleop Example","text":"

    See the video below for an example of teleoperation in action.

    "},{"location":"video_streaming/","title":"Video Streaming","text":"

    The Trunk robot is equipped with a camera that can be used to stream video data to a remote computer. This can be useful for teleoperation, data collection, or other applications. The video stream is published as a ROS2 topic, which can be subscribed to by other nodes in the ROS2 network.

    "},{"location":"video_streaming/#usage","title":"Usage","text":"

    To start the video stream, run the following command on the PI:

    cd cam_ws\nsource install/setup.bash\nros2 run v4l2_camera v4l2_camera_node --ros-args -p image_size:=[1920,1080]\n
    This will start the video stream and publish the video data on the /image topic, and compressed video data on the /image/compressed topic. To alter for instance the frame rate or resolution, simply add the arguments as:
    ros2 run v4l2_camera v4l2_camera_node --ros-args -p image_size:=[1920,1080] -p framerate:=15\n

    To subscribe to the video stream, run the following command on the remote computer inside any ROS2 workspace:

    ros2 run rqt_image_view rqt_image_view\n
    and select the appropriate topic to view the video stream, e.g. /image/theora. This can also be viewed directly with all the other data, as described in the telemetry viewer page.

    "},{"location":"visuomotor_rollout/","title":"Visuomotor Rollout","text":"

    To test a visuomotor policy using the Trunk robot hardware, first set up the robot using and motor control and video streaming instructions, then the following steps can be followed.

    "},{"location":"visuomotor_rollout/#usage","title":"Usage","text":"

    Initialize a control solver node:

    cd asl_trunk_ws\nsource install/setup.bash\nros2 run controller ik_solver_node\n

    To start the visuomotor rollout, run these commands in a new terminal:

    cd asl_trunk_ws\nsource install/setup.bash\nros2 run executor visuomotor_node\n

    The robot hardware will then react to vision input.

    "},{"location":"visuomotor_rollout/#example-rollout","title":"Example Rollout","text":"

    In the following video, a ResNet18 was trained to output desired trunk pose from an image of the robot enclosure. A set of ~90 training images were collected with AVP teleoperation to have the robot point toward the red octagon. Here's the rollout seen at 8x speed:

    "},{"location":"visuomotor_rollout/#visuomotor-policy-code","title":"Visuomotor Policy Code","text":"

    All code for training and testing visuomotor policies is available in this Github repo.

    "}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..803be75 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,63 @@ + + + + https://stanfordasl.github.io/trunk-stack/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/3d_printing/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/collecting_data/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/contributing/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/electrical_design/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/mechanical_design/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/mocap/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/motor_control/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/optitrack/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/ros2_workspaces/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/software_design/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/telemetry_viewer/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/teleoperation/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/video_streaming/ + 2024-10-18 + + + https://stanfordasl.github.io/trunk-stack/visuomotor_rollout/ + 2024-10-18 + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..e3ed8f516cfecee6f3c313c3523dd0b1ac7c6a69 GIT binary patch literal 341 zcmV-b0jmBViwFn+r4eTW|8r?{Wo=<_E_iKh0L_-cZo?o9K=1vEDEEZ4+o7A%^tLb9 z&JhJSK_xh{on-s_k+zz4-VW3kz!>|eIrwY_Vu#_7Z_6srAQ-eRbcg)o{jJ#N z$7WMc?*ZK)2v=N zx?$1bjAS+YvUAc;r_!Mkn!=@sd*-5Qwc7tau2}}O&92%#7u%}X?xV?FcZ;Wf0{$=b zlWj+GL1I2qVi@!u%u3N(Ejleq5OSv}bxL4O2sxvDYk^%CQo;;idL14G22E_fqyU1{ zUJC_%N)Q~y2_?Ql2zl2oNEaTp0Zxg+c$P&IJV233?B4-|zS`Nr0+gBsM<6Zn6-)^- nI}6yd5a=QC^*TGA@Ycw&i9Js8cbe-E{}0VK@!VmPZwLSYpPr)d literal 0 HcmV?d00001 diff --git a/software_design/index.html b/software_design/index.html new file mode 100644 index 0000000..0cc1b3c --- /dev/null +++ b/software_design/index.html @@ -0,0 +1,1055 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Software - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Software Design

    +

    Description

    +

    The software stack of the ASL Trunk Robot is primarily developed in ROS2, and can is divided into the components: +main, motion capture, motor control, camera and gripper.

    +

    We assume that several computing resources are available: a Rapsberry Pi for executing the motor control, a main linux machine for running the experiments, and a Windows machine for running the motion capture Motive software.

    +

    ROS2 Graph

    +

    We provide an overall architecture of the ROS2 nodes, topics and services used in the software stack. +This diagram is insipred by ros2_graph.

    +
    flowchart 
    +
    +/run_experiment_node[ /run_experiment_node ]:::main
    +
    +/converter_node_motors[ /converter_node motors ]:::node
    +/converter_node_mocap[ /converter_node mocap ]:::node
    +/ros_phoenix_node[ /ros_phoenix_node ]:::node
    +%% /mocap4ros2_optitrack_node[ /mocap4ros2_optitrack_node ]:::node
    +%% /v4l2_camera_node[ /v4l2_camera_node ]:::node
    +/servo_control_node[ /servo_control_node ]:::node
    +/mpc_solver_node[ /mpc_solver_node ]:::node
    +
    +/rigid_bodies([ /rigid_bodies ]):::topic
    +/markers([ /markers ]):::topic
    +/trunk_rigid_bodies([ /trunk_rigid_bodies ]):::topic
    +/trunk_markers([ /trunk_markers ]):::topic
    +/image_raw([ /image_raw ]):::topic
    +/talon1_set([ /talon1/set ]):::topic
    +/talon2_set([ /talon2/set ]):::topic
    +/talon3_set([ /talon3/set ]):::topic
    +/talon4_set([ /talon4/set ]):::topic
    +/talon5_set([ /talon5/set ]):::topic
    +/talon6_set([ /talon6/set ]):::topic
    +%% /talon1_status([ /talon1/status ]):::topic
    +%% /talon2_status([ /talon2/status ]):::topic
    +%% /talon3_status([ /talon3/status ]):::topic
    +%% /talon4_status([ /talon4/status ]):::topic
    +%% /talon5_status([ /talon5/status ]):::topic
    +%% /talon6_status([ /talon6/status ]):::topic
    +/all_motors_status([ /all_motors_status ]):::topic
    +/all_motors_control([ /all_motors_control ]):::topic
    +
    +/move_gripper[/move_gripper\]:::service
    +/mpc_solver[/mpc_solver\]:::service
    +/ik_solver[/ik_solver\]:::service
    +
    +/run_experiment_node --> /all_motors_control --> /converter_node_motors
    +/converter_node_motors --> /talon1_set --> /ros_phoenix_node
    +/converter_node_motors --> /talon2_set --> /ros_phoenix_node
    +/converter_node_motors --> /talon3_set --> /ros_phoenix_node
    +/converter_node_motors --> /talon4_set --> /ros_phoenix_node
    +/converter_node_motors --> /talon5_set --> /ros_phoenix_node
    +/converter_node_motors --> /talon6_set --> /ros_phoenix_node
    +%% /ros_phoenix_node --> /talon1_status --> /converter_node_motors
    +%% /ros_phoenix_node --> /talon2_status --> /converter_node_motors
    +%% /ros_phoenix_node --> /talon3_status --> /converter_node_motors
    +%% /ros_phoenix_node --> /talon4_status --> /converter_node_motors
    +%% /ros_phoenix_node --> /talon5_status --> /converter_node_motors
    +%% /ros_phoenix_node --> /talon6_status --> /converter_node_motors
    +/converter_node_motors --> /all_motors_status --> /run_experiment_node
    +
    +/rigid_bodies --> /converter_node_mocap
    +/markers --> /converter_node_mocap
    +/converter_node_mocap --> /trunk_rigid_bodies --> /run_experiment_node
    +/converter_node_mocap --> /trunk_markers --> /run_experiment_node
    +
    +%% /v4l2_camera_node --> /image_raw --> /run_experiment_node
    +/image_raw --> /run_experiment_node
    +
    +/run_experiment_node <==> /move_gripper o==o /servo_control_node
    +/run_experiment_node <==> /mpc_solver o==o /mpc_solver_node 
    +/run_experiment_node <==> /ik_solver o==o /ik_solver_node 
    +
    +subgraph keys[<b>Keys<b/>]
    +subgraph nodes[<b><b/>]
    +topicb((Not connected)):::bugged
    +main_node[main]:::main
    +end
    +subgraph connection[<b><b/>]
    +node1[node1]:::node
    +node2[node2]:::node
    +node1 o-.-o|to server| service[/Service\]:::service
    +service <-.->|to client| node2
    +node1 -->|publish| topic([Topic]):::topic
    +topic -->|subscribe| node2
    +node1 o==o|to server| action{{Action}}:::action
    +action <==>|to client| node2
    +end
    +end
    +
    +classDef node opacity:0.9,fill:#2A0,stroke:#391,stroke-width:4px,color:#fff
    +classDef action opacity:0.9,fill:#66A,stroke:#225,stroke-width:2px,color:#fff
    +classDef service opacity:0.9,fill:#3B8062,stroke:#3B6062,stroke-width:2px,color:#fff
    +classDef topic opacity:0.9,fill:#852,stroke:#CCC,stroke-width:2px,color:#fff
    +classDef main opacity:0.9,fill:#059,stroke:#09F,stroke-width:4px,color:#fff
    +classDef bugged opacity:0.9,fill:#933,stroke:#800,stroke-width:2px,color:#fff
    +style keys opacity:0.15,fill:#FFF
    +style nodes opacity:0.15,fill:#FFF
    +style connection opacity:0.15,fill:#FFF
    +

    Teleoperation

    +

    Overview

    +

    The trunk robot can be teleoperated by a user wearing an Apple Vision Pro. We designed an augmented reality app written in Swift which initializes a virtual 3D, 3-link spherical pendulum overlayed on the real-world view of the user. Once the virtual trunk is initialized, the user can calibrate the position and orientation of the virtual trunk to the hardware system. After calibration, the user can look at one of the disks on the trunk, which then lights up to denote its selection. The user can pinch their thumb and forefinger to select the disk, then the position of the virtual disk will mirror the position of their hand. The virtual disk positions can optionally be streamed over WiFi to a ROS2 listener, which publishes the 3D positions of the 3 disks on the trunk to the desired positions topic. A controller node subscribes to this topic and calculates the motor outputs necessary to attain that pose. The updated motor outputs are published to the motors, which causes the hardware trunk to mirror the virtual trunk. Streaming of desired trunk positions is done at 10Hz, and all of the other ROS2 functions run at 100Hz.

    +

    Swift App Design

    +

    The Apple Vision Pro teleoperation app was written in Swift 5 using XCode Beta 16 for VisionOS 2.0 Beta. Beta versions of XCode and VisionOS were used since some functionality necessary for our app was only available in beta versions.

    +

    Our 3D assets were programmatically generated with standard hierarchical RealityKit Entities. The entities are placed into a MeshResource.Skeleton, upon which a custom IKComponent is added. A corresponding IKSolver smoothly solves the inverse kinematics of the 3 spherical pendulum joints when the position of the end effector is commanded with a gesture. The disk selection gestures are created with DragGestures. The streaming functionality for our app was heavily inspired by VisionProTeleop, using GRPC to stream disk positions over WiFi.

    +

    Source code for the app can be found in this GitHub repository.

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stylesheets/extra.css b/stylesheets/extra.css new file mode 100644 index 0000000..6d8774b --- /dev/null +++ b/stylesheets/extra.css @@ -0,0 +1,3 @@ +:root { + --md-primary-fg-color: #3066ac; + } diff --git a/telemetry_viewer/index.html b/telemetry_viewer/index.html new file mode 100644 index 0000000..7767eef --- /dev/null +++ b/telemetry_viewer/index.html @@ -0,0 +1,899 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Telemetry Viewer - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Telemetry Viewer

    +

    For visualizing telemetry data, such as the motor output currents, motor control temperatures, and webcam stream, we use the free foxglove tool.

    +

    Usage

    +

    You can run the Foxglove server/ROS2 node by running the following command in any ROS2 workspace: +

    ros2 launch foxglove_bridge foxglove_bridge.launch.xml
    +
    +Note that Foxglove is installed for a particular ROS2 distribution, but you can install it for any distribution, see below. +Then, just open the Foxglove web interface via their website and connect. +You will be able to visualize almost any data type. +Finally, particular settings, such as topics to listen to, are stored and can be found in the repo.

    +

    Installing Foxglove

    +

    The only thing to do to run Foxglove is to install the WebSocket server. This can be done by running the following command: +

    sudo apt install ros-$ROS_DISTRO-foxglove-bridge
    +

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/teleoperation/index.html b/teleoperation/index.html new file mode 100644 index 0000000..2c4826a --- /dev/null +++ b/teleoperation/index.html @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Teleoperation - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Teleoperation

    +

    To collect data for visuomotor policies using the Trunk robot with teleoperation, or to just teleoperate the robot for a demonstration, first set up the robot using the motor control, motion capture, and video streaming directions, then the following steps can be followed.

    +

    Usage

    +

    Initialize a control solver node: +

    cd asl_trunk_ws
    +source install/setup.bash
    +ros2 run controller ik_solver_node
    +

    +

    Start an image storing node: +

    cd asl_trunk_ws
    +source install/setup.bash
    +ros2 run streamer image_storing_node
    +

    +

    Start an executor node: +

    cd asl_trunk_ws
    +source install/setup.bash
    +ros2 run executor run_experiment_node 
    +

    +

    Then initialize the AVP streaming node: +

    cd asl_trunk_ws
    +source install/setup.bash
    +ros2 run streamer avp_streamer_node
    +

    +

    You can then follow the prompts in the TrunkTeleop App on the AVP to calibrate the virtual trunk to the hardware trunk, then start streaming and recording data from trunk teleoperation.

    +

    Teleop Example

    +

    See the video below for an example of teleoperation in action.

    + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/video_streaming/index.html b/video_streaming/index.html new file mode 100644 index 0000000..a6dc032 --- /dev/null +++ b/video_streaming/index.html @@ -0,0 +1,884 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Video Streaming - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Video Streaming

    +

    The Trunk robot is equipped with a camera that can be used to stream video data to a remote computer. This can be useful for teleoperation, data collection, or other applications. The video stream is published as a ROS2 topic, which can be subscribed to by other nodes in the ROS2 network.

    +

    Usage

    +

    To start the video stream, run the following command on the PI: +

    cd cam_ws
    +source install/setup.bash
    +ros2 run v4l2_camera v4l2_camera_node --ros-args -p image_size:=[1920,1080]
    +
    +This will start the video stream and publish the video data on the /image topic, and compressed video data on the /image/compressed topic. +To alter for instance the frame rate or resolution, simply add the arguments as: +
    ros2 run v4l2_camera v4l2_camera_node --ros-args -p image_size:=[1920,1080] -p framerate:=15
    +

    +

    To subscribe to the video stream, run the following command on the remote computer inside any ROS2 workspace: +

    ros2 run rqt_image_view rqt_image_view
    +
    +and select the appropriate topic to view the video stream, e.g. /image/theora. +This can also be viewed directly with all the other data, as described in the telemetry viewer page.

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/visuomotor_rollout/index.html b/visuomotor_rollout/index.html new file mode 100644 index 0000000..a647dd9 --- /dev/null +++ b/visuomotor_rollout/index.html @@ -0,0 +1,923 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Visuomotor Rollout - ASL Trunk Robot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Visuomotor Rollout

    +

    To test a visuomotor policy using the Trunk robot hardware, first set up the robot using and motor control and video streaming instructions, then the following steps can be followed.

    +

    Usage

    +

    Initialize a control solver node: +

    cd asl_trunk_ws
    +source install/setup.bash
    +ros2 run controller ik_solver_node
    +

    +

    To start the visuomotor rollout, run these commands in a new terminal: +

    cd asl_trunk_ws
    +source install/setup.bash
    +ros2 run executor visuomotor_node
    +

    +

    The robot hardware will then react to vision input.

    +

    Example Rollout

    +

    In the following video, a ResNet18 was trained to output desired trunk pose from an image of the robot enclosure. A set of ~90 training images were collected with AVP teleoperation to have the robot point toward the red octagon. Here's the rollout seen at 8x speed:

    + + +

    Visuomotor Policy Code

    +

    All code for training and testing visuomotor policies is available in this Github repo.

    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file

    The flexible body of the trunk is a standard vacuum hose, which was cut to length for our application. 3 custom 3D printed disks, which each have 12 radially symmetric channels, divide the trunk into 3 equal-length segments. At each disk, 4 tendons terminate. Each disk also has a unique arrangment of motion capture markers, so OptiTrack Motive can easily distinguish them from each other for pose estimation. A custom parallel jaw gripper, adapted from this design, is mounted on the end effector, driven by a small servo housed within the trunk body. The jaws of the gripper are easily swappable for different applications, including carrying large amounts of weight (up to 600g).

    +ahKNC#?oeRNzlDW-JB-MVQxqf(r_4$ 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 FV1lP(x-tL& literal 0 HcmV?d00001 diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.83f73b43.min.js b/assets/javascripts/bundle.83f73b43.min.js new file mode 100644 index 0000000..43d8b70 --- /dev/null +++ b/assets/javascripts/bundle.83f73b43.min.js @@ -0,0 +1,16 @@ +"use strict";(()=>{var Wi=Object.create;var gr=Object.defineProperty;var Di=Object.getOwnPropertyDescriptor;var Vi=Object.getOwnPropertyNames,Vt=Object.getOwnPropertySymbols,Ni=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,ao=Object.prototype.propertyIsEnumerable;var io=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,$=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&io(e,r,t[r]);if(Vt)for(var r of Vt(t))ao.call(t,r)&&io(e,r,t[r]);return e};var so=(e,t)=>{var r={};for(var o in e)yr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Vt)for(var o of Vt(e))t.indexOf(o)<0&&ao.call(e,o)&&(r[o]=e[o]);return r};var xr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var zi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Vi(t))!yr.call(e,n)&&n!==r&&gr(e,n,{get:()=>t[n],enumerable:!(o=Di(t,n))||o.enumerable});return e};var Mt=(e,t,r)=>(r=e!=null?Wi(Ni(e)):{},zi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var co=(e,t,r)=>new Promise((o,n)=>{var i=p=>{try{s(r.next(p))}catch(c){n(c)}},a=p=>{try{s(r.throw(p))}catch(c){n(c)}},s=p=>p.done?o(p.value):Promise.resolve(p.value).then(i,a);s((r=r.apply(e,t)).next())});var lo=xr((Er,po)=>{(function(e,t){typeof Er=="object"&&typeof po!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Er,function(){"use strict";function e(r){var o=!0,n=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(k){return!!(k&&k!==document&&k.nodeName!=="HTML"&&k.nodeName!=="BODY"&&"classList"in k&&"contains"in k.classList)}function p(k){var ft=k.type,qe=k.tagName;return!!(qe==="INPUT"&&a[ft]&&!k.readOnly||qe==="TEXTAREA"&&!k.readOnly||k.isContentEditable)}function c(k){k.classList.contains("focus-visible")||(k.classList.add("focus-visible"),k.setAttribute("data-focus-visible-added",""))}function l(k){k.hasAttribute("data-focus-visible-added")&&(k.classList.remove("focus-visible"),k.removeAttribute("data-focus-visible-added"))}function f(k){k.metaKey||k.altKey||k.ctrlKey||(s(r.activeElement)&&c(r.activeElement),o=!0)}function u(k){o=!1}function d(k){s(k.target)&&(o||p(k.target))&&c(k.target)}function y(k){s(k.target)&&(k.target.classList.contains("focus-visible")||k.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(k.target))}function L(k){document.visibilityState==="hidden"&&(n&&(o=!0),X())}function X(){document.addEventListener("mousemove",J),document.addEventListener("mousedown",J),document.addEventListener("mouseup",J),document.addEventListener("pointermove",J),document.addEventListener("pointerdown",J),document.addEventListener("pointerup",J),document.addEventListener("touchmove",J),document.addEventListener("touchstart",J),document.addEventListener("touchend",J)}function te(){document.removeEventListener("mousemove",J),document.removeEventListener("mousedown",J),document.removeEventListener("mouseup",J),document.removeEventListener("pointermove",J),document.removeEventListener("pointerdown",J),document.removeEventListener("pointerup",J),document.removeEventListener("touchmove",J),document.removeEventListener("touchstart",J),document.removeEventListener("touchend",J)}function J(k){k.target.nodeName&&k.target.nodeName.toLowerCase()==="html"||(o=!1,te())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",L,!0),X(),r.addEventListener("focus",d,!0),r.addEventListener("blur",y,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var qr=xr((hy,On)=>{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var $a=/["'&<>]/;On.exports=Pa;function Pa(e){var t=""+e,r=$a.exec(t);if(!r)return t;var o,n="",i=0,a=0;for(i=r.index;i{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof It=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof It=="object"?It.ClipboardJS=r():t.ClipboardJS=r()})(It,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Ui}});var a=i(279),s=i.n(a),p=i(370),c=i.n(p),l=i(817),f=i.n(l);function u(V){try{return document.execCommand(V)}catch(A){return!1}}var d=function(A){var M=f()(A);return u("cut"),M},y=d;function L(V){var A=document.documentElement.getAttribute("dir")==="rtl",M=document.createElement("textarea");M.style.fontSize="12pt",M.style.border="0",M.style.padding="0",M.style.margin="0",M.style.position="absolute",M.style[A?"right":"left"]="-9999px";var F=window.pageYOffset||document.documentElement.scrollTop;return M.style.top="".concat(F,"px"),M.setAttribute("readonly",""),M.value=V,M}var X=function(A,M){var F=L(A);M.container.appendChild(F);var D=f()(F);return u("copy"),F.remove(),D},te=function(A){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},F="";return typeof A=="string"?F=X(A,M):A instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(A==null?void 0:A.type)?F=X(A.value,M):(F=f()(A),u("copy")),F},J=te;function k(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?k=function(M){return typeof M}:k=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},k(V)}var ft=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=A.action,F=M===void 0?"copy":M,D=A.container,Y=A.target,$e=A.text;if(F!=="copy"&&F!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Y!==void 0)if(Y&&k(Y)==="object"&&Y.nodeType===1){if(F==="copy"&&Y.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(F==="cut"&&(Y.hasAttribute("readonly")||Y.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if($e)return J($e,{container:D});if(Y)return F==="cut"?y(Y):J(Y,{container:D})},qe=ft;function Fe(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fe=function(M){return typeof M}:Fe=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},Fe(V)}function ki(V,A){if(!(V instanceof A))throw new TypeError("Cannot call a class as a function")}function no(V,A){for(var M=0;M0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof D.action=="function"?D.action:this.defaultAction,this.target=typeof D.target=="function"?D.target:this.defaultTarget,this.text=typeof D.text=="function"?D.text:this.defaultText,this.container=Fe(D.container)==="object"?D.container:document.body}},{key:"listenClick",value:function(D){var Y=this;this.listener=c()(D,"click",function($e){return Y.onClick($e)})}},{key:"onClick",value:function(D){var Y=D.delegateTarget||D.currentTarget,$e=this.action(Y)||"copy",Dt=qe({action:$e,container:this.container,target:this.target(Y),text:this.text(Y)});this.emit(Dt?"success":"error",{action:$e,text:Dt,trigger:Y,clearSelection:function(){Y&&Y.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(D){return vr("action",D)}},{key:"defaultTarget",value:function(D){var Y=vr("target",D);if(Y)return document.querySelector(Y)}},{key:"defaultText",value:function(D){return vr("text",D)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(D){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return J(D,Y)}},{key:"cut",value:function(D){return y(D)}},{key:"isSupported",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Y=typeof D=="string"?[D]:D,$e=!!document.queryCommandSupported;return Y.forEach(function(Dt){$e=$e&&!!document.queryCommandSupported(Dt)}),$e}}]),M}(s()),Ui=Fi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,p){for(;s&&s.nodeType!==n;){if(typeof s.matches=="function"&&s.matches(p))return s;s=s.parentNode}}o.exports=a},438:function(o,n,i){var a=i(828);function s(l,f,u,d,y){var L=c.apply(this,arguments);return l.addEventListener(u,L,y),{destroy:function(){l.removeEventListener(u,L,y)}}}function p(l,f,u,d,y){return typeof l.addEventListener=="function"?s.apply(null,arguments):typeof u=="function"?s.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(L){return s(L,f,u,d,y)}))}function c(l,f,u,d){return function(y){y.delegateTarget=a(y.target,f),y.delegateTarget&&d.call(l,y)}}o.exports=p},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(o,n,i){var a=i(879),s=i(438);function p(u,d,y){if(!u&&!d&&!y)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(y))throw new TypeError("Third argument must be a Function");if(a.node(u))return c(u,d,y);if(a.nodeList(u))return l(u,d,y);if(a.string(u))return f(u,d,y);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(u,d,y){return u.addEventListener(d,y),{destroy:function(){u.removeEventListener(d,y)}}}function l(u,d,y){return Array.prototype.forEach.call(u,function(L){L.addEventListener(d,y)}),{destroy:function(){Array.prototype.forEach.call(u,function(L){L.removeEventListener(d,y)})}}}function f(u,d,y){return s(document.body,u,d,y)}o.exports=p},817:function(o){function n(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var p=window.getSelection(),c=document.createRange();c.selectNodeContents(i),p.removeAllRanges(),p.addRange(c),a=p.toString()}return a}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,a,s){var p=this.e||(this.e={});return(p[i]||(p[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var p=this;function c(){p.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),p=0,c=s.length;for(p;p0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function N(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],a;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function q(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||p(d,L)})},y&&(n[d]=y(n[d])))}function p(d,y){try{c(o[d](y))}catch(L){u(i[0][3],L)}}function c(d){d.value instanceof nt?Promise.resolve(d.value.v).then(l,f):u(i[0][2],d)}function l(d){p("next",d)}function f(d){p("throw",d)}function u(d,y){d(y),i.shift(),i.length&&p(i[0][0],i[0][1])}}function uo(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof he=="function"?he(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(a){return new Promise(function(s,p){a=e[i](a),n(s,p,a.done,a.value)})}}function n(i,a,s,p){Promise.resolve(p).then(function(c){i({value:c,done:s})},a)}}function H(e){return typeof e=="function"}function ut(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var zt=ut(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Qe(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ue=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=he(a),p=s.next();!p.done;p=s.next()){var c=p.value;c.remove(this)}}catch(L){t={error:L}}finally{try{p&&!p.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var l=this.initialTeardown;if(H(l))try{l()}catch(L){i=L instanceof zt?L.errors:[L]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=he(f),d=u.next();!d.done;d=u.next()){var y=d.value;try{ho(y)}catch(L){i=i!=null?i:[],L instanceof zt?i=q(q([],N(i)),N(L.errors)):i.push(L)}}}catch(L){o={error:L}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new zt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ho(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Qe(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Qe(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=Ue.EMPTY;function qt(e){return e instanceof Ue||e&&"closed"in e&&H(e.remove)&&H(e.add)&&H(e.unsubscribe)}function ho(e){H(e)?e():e.unsubscribe()}var Pe={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var dt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,a=n.isStopped,s=n.observers;return i||a?Tr:(this.currentObservers=null,s.push(r),new Ue(function(){o.currentObservers=null,Qe(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,a=o.isStopped;n?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new j;return r.source=this,r},t.create=function(r,o){return new To(r,o)},t}(j);var To=function(e){oe(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:Tr},t}(g);var _r=function(e){oe(t,e);function t(r){var o=e.call(this)||this;return o._value=r,o}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(r){var o=e.prototype._subscribe.call(this,r);return!o.closed&&r.next(this._value),o},t.prototype.getValue=function(){var r=this,o=r.hasError,n=r.thrownError,i=r._value;if(o)throw n;return this._throwIfClosed(),i},t.prototype.next=function(r){e.prototype.next.call(this,this._value=r)},t}(g);var At={now:function(){return(At.delegate||Date).now()},delegate:void 0};var Ct=function(e){oe(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=At);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,a=o._infiniteTimeWindow,s=o._timestampProvider,p=o._windowTime;n||(i.push(r),!a&&i.push(s.now()+p)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,a=n._buffer,s=a.slice(),p=0;p0?e.prototype.schedule.call(this,r,o):(this.delay=o,this.state=r,this.scheduler.flush(this),this)},t.prototype.execute=function(r,o){return o>0||this.closed?e.prototype.execute.call(this,r,o):this._execute(r,o)},t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!=null&&n>0||n==null&&this.delay>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.flush(this),0)},t}(gt);var Lo=function(e){oe(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(yt);var kr=new Lo(Oo);var Mo=function(e){oe(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!==null&&n>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=vt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var a=r.actions;o!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==o&&(vt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(gt);var _o=function(e){oe(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(yt);var me=new _o(Mo);var S=new j(function(e){return e.complete()});function Yt(e){return e&&H(e.schedule)}function Hr(e){return e[e.length-1]}function Xe(e){return H(Hr(e))?e.pop():void 0}function ke(e){return Yt(Hr(e))?e.pop():void 0}function Bt(e,t){return typeof Hr(e)=="number"?e.pop():t}var xt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Gt(e){return H(e==null?void 0:e.then)}function Jt(e){return H(e[bt])}function Xt(e){return Symbol.asyncIterator&&H(e==null?void 0:e[Symbol.asyncIterator])}function Zt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var er=Zi();function tr(e){return H(e==null?void 0:e[er])}function rr(e){return fo(this,arguments,function(){var r,o,n,i;return Nt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,nt(r.read())];case 3:return o=a.sent(),n=o.value,i=o.done,i?[4,nt(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,nt(n)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function or(e){return H(e==null?void 0:e.getReader)}function U(e){if(e instanceof j)return e;if(e!=null){if(Jt(e))return ea(e);if(xt(e))return ta(e);if(Gt(e))return ra(e);if(Xt(e))return Ao(e);if(tr(e))return oa(e);if(or(e))return na(e)}throw Zt(e)}function ea(e){return new j(function(t){var r=e[bt]();if(H(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ta(e){return new j(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?b(function(n,i){return e(n,i,o)}):le,Te(1),r?De(t):Qo(function(){return new ir}))}}function jr(e){return e<=0?function(){return S}:E(function(t,r){var o=[];t.subscribe(T(r,function(n){o.push(n),e=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new g}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,p=s===void 0?!0:s;return function(c){var l,f,u,d=0,y=!1,L=!1,X=function(){f==null||f.unsubscribe(),f=void 0},te=function(){X(),l=u=void 0,y=L=!1},J=function(){var k=l;te(),k==null||k.unsubscribe()};return E(function(k,ft){d++,!L&&!y&&X();var qe=u=u!=null?u:r();ft.add(function(){d--,d===0&&!L&&!y&&(f=Ur(J,p))}),qe.subscribe(ft),!l&&d>0&&(l=new at({next:function(Fe){return qe.next(Fe)},error:function(Fe){L=!0,X(),f=Ur(te,n,Fe),qe.error(Fe)},complete:function(){y=!0,X(),f=Ur(te,a),qe.complete()}}),U(k).subscribe(l))})(c)}}function Ur(e,t){for(var r=[],o=2;oe.next(document)),e}function P(e,t=document){return Array.from(t.querySelectorAll(e))}function R(e,t=document){let r=fe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function fe(e,t=document){return t.querySelector(e)||void 0}function Ie(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var wa=O(h(document.body,"focusin"),h(document.body,"focusout")).pipe(_e(1),Q(void 0),m(()=>Ie()||document.body),G(1));function et(e){return wa.pipe(m(t=>e.contains(t)),K())}function $t(e,t){return C(()=>O(h(e,"mouseenter").pipe(m(()=>!0)),h(e,"mouseleave").pipe(m(()=>!1))).pipe(t?Ht(r=>Le(+!r*t)):le,Q(e.matches(":hover"))))}function Jo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Jo(e,r)}function x(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)Jo(o,n);return o}function sr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function Tt(e){let t=x("script",{src:e});return C(()=>(document.head.appendChild(t),O(h(t,"load"),h(t,"error").pipe(v(()=>$r(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),_(()=>document.head.removeChild(t)),Te(1))))}var Xo=new g,Ta=C(()=>typeof ResizeObserver=="undefined"?Tt("https://unpkg.com/resize-observer-polyfill"):I(void 0)).pipe(m(()=>new ResizeObserver(e=>e.forEach(t=>Xo.next(t)))),v(e=>O(Ye,I(e)).pipe(_(()=>e.disconnect()))),G(1));function ce(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){let t=e;for(;t.clientWidth===0&&t.parentElement;)t=t.parentElement;return Ta.pipe(w(r=>r.observe(t)),v(r=>Xo.pipe(b(o=>o.target===t),_(()=>r.unobserve(t)))),m(()=>ce(e)),Q(ce(e)))}function St(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}function Zo(e){let t=[],r=e.parentElement;for(;r;)(e.clientWidth>r.clientWidth||e.clientHeight>r.clientHeight)&&t.push(r),r=(e=r).parentElement;return t.length===0&&t.push(document.documentElement),t}function Ve(e){return{x:e.offsetLeft,y:e.offsetTop}}function en(e){let t=e.getBoundingClientRect();return{x:t.x+window.scrollX,y:t.y+window.scrollY}}function tn(e){return O(h(window,"load"),h(window,"resize")).pipe(Me(0,me),m(()=>Ve(e)),Q(Ve(e)))}function pr(e){return{x:e.scrollLeft,y:e.scrollTop}}function Ne(e){return O(h(e,"scroll"),h(window,"scroll"),h(window,"resize")).pipe(Me(0,me),m(()=>pr(e)),Q(pr(e)))}var rn=new g,Sa=C(()=>I(new IntersectionObserver(e=>{for(let t of e)rn.next(t)},{threshold:0}))).pipe(v(e=>O(Ye,I(e)).pipe(_(()=>e.disconnect()))),G(1));function tt(e){return Sa.pipe(w(t=>t.observe(e)),v(t=>rn.pipe(b(({target:r})=>r===e),_(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function on(e,t=16){return Ne(e).pipe(m(({y:r})=>{let o=ce(e),n=St(e);return r>=n.height-o.height-t}),K())}var lr={drawer:R("[data-md-toggle=drawer]"),search:R("[data-md-toggle=search]")};function nn(e){return lr[e].checked}function Je(e,t){lr[e].checked!==t&&lr[e].click()}function ze(e){let t=lr[e];return h(t,"change").pipe(m(()=>t.checked),Q(t.checked))}function Oa(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function La(){return O(h(window,"compositionstart").pipe(m(()=>!0)),h(window,"compositionend").pipe(m(()=>!1))).pipe(Q(!1))}function an(){let e=h(window,"keydown").pipe(b(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:nn("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),b(({mode:t,type:r})=>{if(t==="global"){let o=Ie();if(typeof o!="undefined")return!Oa(o,r)}return!0}),pe());return La().pipe(v(t=>t?S:e))}function ye(){return new URL(location.href)}function lt(e,t=!1){if(B("navigation.instant")&&!t){let r=x("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function sn(){return new g}function cn(){return location.hash.slice(1)}function pn(e){let t=x("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Ma(e){return O(h(window,"hashchange"),e).pipe(m(cn),Q(cn()),b(t=>t.length>0),G(1))}function ln(e){return Ma(e).pipe(m(t=>fe(`[id="${t}"]`)),b(t=>typeof t!="undefined"))}function Pt(e){let t=matchMedia(e);return ar(r=>t.addListener(()=>r(t.matches))).pipe(Q(t.matches))}function mn(){let e=matchMedia("print");return O(h(window,"beforeprint").pipe(m(()=>!0)),h(window,"afterprint").pipe(m(()=>!1))).pipe(Q(e.matches))}function Nr(e,t){return e.pipe(v(r=>r?t():S))}function zr(e,t){return new j(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let a=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+a*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function je(e,t){return zr(e,t).pipe(v(r=>r.text()),m(r=>JSON.parse(r)),G(1))}function fn(e,t){let r=new DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),G(1))}function un(e,t){let r=new DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),G(1))}function dn(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function hn(){return O(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(m(dn),Q(dn()))}function bn(){return{width:innerWidth,height:innerHeight}}function vn(){return h(window,"resize",{passive:!0}).pipe(m(bn),Q(bn()))}function gn(){return z([hn(),vn()]).pipe(m(([e,t])=>({offset:e,size:t})),G(1))}function mr(e,{viewport$:t,header$:r}){let o=t.pipe(ee("size")),n=z([o,r]).pipe(m(()=>Ve(e)));return z([r,t,n]).pipe(m(([{height:i},{offset:a,size:s},{x:p,y:c}])=>({offset:{x:a.x-p,y:a.y-c+i},size:s})))}function _a(e){return h(e,"message",t=>t.data)}function Aa(e){let t=new g;return t.subscribe(r=>e.postMessage(r)),t}function yn(e,t=new Worker(e)){let r=_a(t),o=Aa(t),n=new g;n.subscribe(o);let i=o.pipe(Z(),ie(!0));return n.pipe(Z(),Re(r.pipe(W(i))),pe())}var Ca=R("#__config"),Ot=JSON.parse(Ca.textContent);Ot.base=`${new URL(Ot.base,ye())}`;function xe(){return Ot}function B(e){return Ot.features.includes(e)}function Ee(e,t){return typeof t!="undefined"?Ot.translations[e].replace("#",t.toString()):Ot.translations[e]}function Se(e,t=document){return R(`[data-md-component=${e}]`,t)}function ae(e,t=document){return P(`[data-md-component=${e}]`,t)}function ka(e){let t=R(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(m(()=>R(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function xn(e){if(!B("announce.dismiss")||!e.childElementCount)return S;if(!e.hidden){let t=R(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return C(()=>{let t=new g;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),ka(e).pipe(w(r=>t.next(r)),_(()=>t.complete()),m(r=>$({ref:e},r)))})}function Ha(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function En(e,t){let r=new g;return r.subscribe(({hidden:o})=>{e.hidden=o}),Ha(e,t).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))}function Rt(e,t){return t==="inline"?x("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"})):x("div",{class:"md-tooltip",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"}))}function wn(...e){return x("div",{class:"md-tooltip2",role:"tooltip"},x("div",{class:"md-tooltip2__inner md-typeset"},e))}function Tn(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return x("aside",{class:"md-annotation",tabIndex:0},Rt(t),x("a",{href:r,class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}else return x("aside",{class:"md-annotation",tabIndex:0},Rt(t),x("span",{class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}function Sn(e){return x("button",{class:"md-clipboard md-icon",title:Ee("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}var Ln=Mt(qr());function Qr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(p=>!e.terms[p]).reduce((p,c)=>[...p,x("del",null,(0,Ln.default)(c))," "],[]).slice(0,-1),i=xe(),a=new URL(e.location,i.base);B("search.highlight")&&a.searchParams.set("h",Object.entries(e.terms).filter(([,p])=>p).reduce((p,[c])=>`${p} ${c}`.trim(),""));let{tags:s}=xe();return x("a",{href:`${a}`,class:"md-search-result__link",tabIndex:-1},x("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&x("div",{class:"md-search-result__icon md-icon"}),r>0&&x("h1",null,e.title),r<=0&&x("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&x("nav",{class:"md-tags"},e.tags.map(p=>{let c=s?p in s?`md-tag-icon md-tag--${s[p]}`:"md-tag-icon":"";return x("span",{class:`md-tag ${c}`},p)})),o>0&&n.length>0&&x("p",{class:"md-search-result__terms"},Ee("search.result.term.missing"),": ",...n)))}function Mn(e){let t=e[0].score,r=[...e],o=xe(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),a=r.findIndex(l=>l.scoreQr(l,1)),...p.length?[x("details",{class:"md-search-result__more"},x("summary",{tabIndex:-1},x("div",null,p.length>0&&p.length===1?Ee("search.result.more.one"):Ee("search.result.more.other",p.length))),...p.map(l=>Qr(l,1)))]:[]];return x("li",{class:"md-search-result__item"},c)}function _n(e){return x("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>x("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?sr(r):r)))}function Kr(e){let t=`tabbed-control tabbed-control--${e}`;return x("div",{class:t,hidden:!0},x("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function An(e){return x("div",{class:"md-typeset__scrollwrap"},x("div",{class:"md-typeset__table"},e))}function Ra(e){var o;let t=xe(),r=new URL(`../${e.version}/`,t.base);return x("li",{class:"md-version__item"},x("a",{href:`${r}`,class:"md-version__link"},e.title,((o=t.version)==null?void 0:o.alias)&&e.aliases.length>0&&x("span",{class:"md-version__alias"},e.aliases[0])))}function Cn(e,t){var o;let r=xe();return e=e.filter(n=>{var i;return!((i=n.properties)!=null&&i.hidden)}),x("div",{class:"md-version"},x("button",{class:"md-version__current","aria-label":Ee("select.version")},t.title,((o=r.version)==null?void 0:o.alias)&&t.aliases.length>0&&x("span",{class:"md-version__alias"},t.aliases[0])),x("ul",{class:"md-version__list"},e.map(Ra)))}var Ia=0;function ja(e){let t=z([et(e),$t(e)]).pipe(m(([o,n])=>o||n),K()),r=C(()=>Zo(e)).pipe(ne(Ne),pt(1),He(t),m(()=>en(e)));return t.pipe(Ae(o=>o),v(()=>z([t,r])),m(([o,n])=>({active:o,offset:n})),pe())}function Fa(e,t){let{content$:r,viewport$:o}=t,n=`__tooltip2_${Ia++}`;return C(()=>{let i=new g,a=new _r(!1);i.pipe(Z(),ie(!1)).subscribe(a);let s=a.pipe(Ht(c=>Le(+!c*250,kr)),K(),v(c=>c?r:S),w(c=>c.id=n),pe());z([i.pipe(m(({active:c})=>c)),s.pipe(v(c=>$t(c,250)),Q(!1))]).pipe(m(c=>c.some(l=>l))).subscribe(a);let p=a.pipe(b(c=>c),re(s,o),m(([c,l,{size:f}])=>{let u=e.getBoundingClientRect(),d=u.width/2;if(l.role==="tooltip")return{x:d,y:8+u.height};if(u.y>=f.height/2){let{height:y}=ce(l);return{x:d,y:-16-y}}else return{x:d,y:16+u.height}}));return z([s,i,p]).subscribe(([c,{offset:l},f])=>{c.style.setProperty("--md-tooltip-host-x",`${l.x}px`),c.style.setProperty("--md-tooltip-host-y",`${l.y}px`),c.style.setProperty("--md-tooltip-x",`${f.x}px`),c.style.setProperty("--md-tooltip-y",`${f.y}px`),c.classList.toggle("md-tooltip2--top",f.y<0),c.classList.toggle("md-tooltip2--bottom",f.y>=0)}),a.pipe(b(c=>c),re(s,(c,l)=>l),b(c=>c.role==="tooltip")).subscribe(c=>{let l=ce(R(":scope > *",c));c.style.setProperty("--md-tooltip-width",`${l.width}px`),c.style.setProperty("--md-tooltip-tail","0px")}),a.pipe(K(),ve(me),re(s)).subscribe(([c,l])=>{l.classList.toggle("md-tooltip2--active",c)}),z([a.pipe(b(c=>c)),s]).subscribe(([c,l])=>{l.role==="dialog"?(e.setAttribute("aria-controls",n),e.setAttribute("aria-haspopup","dialog")):e.setAttribute("aria-describedby",n)}),a.pipe(b(c=>!c)).subscribe(()=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-describedby"),e.removeAttribute("aria-haspopup")}),ja(e).pipe(w(c=>i.next(c)),_(()=>i.complete()),m(c=>$({ref:e},c)))})}function mt(e,{viewport$:t},r=document.body){return Fa(e,{content$:new j(o=>{let n=e.title,i=wn(n);return o.next(i),e.removeAttribute("title"),r.append(i),()=>{i.remove(),e.setAttribute("title",n)}}),viewport$:t})}function Ua(e,t){let r=C(()=>z([tn(e),Ne(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:a,height:s}=ce(e);return{x:o-i.x+a/2,y:n-i.y+s/2}}));return et(e).pipe(v(o=>r.pipe(m(n=>({active:o,offset:n})),Te(+!o||1/0))))}function kn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return C(()=>{let i=new g,a=i.pipe(Z(),ie(!0));return i.subscribe({next({offset:s}){e.style.setProperty("--md-tooltip-x",`${s.x}px`),e.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),tt(e).pipe(W(a)).subscribe(s=>{e.toggleAttribute("data-md-visible",s)}),O(i.pipe(b(({active:s})=>s)),i.pipe(_e(250),b(({active:s})=>!s))).subscribe({next({active:s}){s?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Me(16,me)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(pt(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?e.style.setProperty("--md-tooltip-0",`${-s}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(W(a),b(s=>!(s.metaKey||s.ctrlKey))).subscribe(s=>{s.stopPropagation(),s.preventDefault()}),h(n,"mousedown").pipe(W(a),re(i)).subscribe(([s,{active:p}])=>{var c;if(s.button!==0||s.metaKey||s.ctrlKey)s.preventDefault();else if(p){s.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(c=Ie())==null||c.blur()}}),r.pipe(W(a),b(s=>s===o),Ge(125)).subscribe(()=>e.focus()),Ua(e,t).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))})}function Wa(e){return e.tagName==="CODE"?P(".c, .c1, .cm",e):[e]}function Da(e){let t=[];for(let r of Wa(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let a;for(;a=/(\(\d+\))(!)?/.exec(i.textContent);){let[,s,p]=a;if(typeof p=="undefined"){let c=i.splitText(a.index);i=c.splitText(s.length),t.push(c)}else{i.textContent=s,t.push(i);break}}}}return t}function Hn(e,t){t.append(...Array.from(e.childNodes))}function fr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,a=new Map;for(let s of Da(t)){let[,p]=s.textContent.match(/\((\d+)\)/);fe(`:scope > li:nth-child(${p})`,e)&&(a.set(p,Tn(p,i)),s.replaceWith(a.get(p)))}return a.size===0?S:C(()=>{let s=new g,p=s.pipe(Z(),ie(!0)),c=[];for(let[l,f]of a)c.push([R(".md-typeset",f),R(`:scope > li:nth-child(${l})`,e)]);return o.pipe(W(p)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of c)l?Hn(f,u):Hn(u,f)}),O(...[...a].map(([,l])=>kn(l,t,{target$:r}))).pipe(_(()=>s.complete()),pe())})}function $n(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return $n(t)}}function Pn(e,t){return C(()=>{let r=$n(e);return typeof r!="undefined"?fr(r,e,t):S})}var Rn=Mt(Br());var Va=0;function In(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return In(t)}}function Na(e){return ge(e).pipe(m(({width:t})=>({scrollable:St(e).width>t})),ee("scrollable"))}function jn(e,t){let{matches:r}=matchMedia("(hover)"),o=C(()=>{let n=new g,i=n.pipe(jr(1));n.subscribe(({scrollable:c})=>{c&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let a=[];if(Rn.default.isSupported()&&(e.closest(".copy")||B("content.code.copy")&&!e.closest(".no-copy"))){let c=e.closest("pre");c.id=`__code_${Va++}`;let l=Sn(c.id);c.insertBefore(l,e),B("content.tooltips")&&a.push(mt(l,{viewport$}))}let s=e.closest(".highlight");if(s instanceof HTMLElement){let c=In(s);if(typeof c!="undefined"&&(s.classList.contains("annotate")||B("content.code.annotate"))){let l=fr(c,e,t);a.push(ge(s).pipe(W(i),m(({width:f,height:u})=>f&&u),K(),v(f=>f?l:S)))}}return P(":scope > span[id]",e).length&&e.classList.add("md-code__content"),Na(e).pipe(w(c=>n.next(c)),_(()=>n.complete()),m(c=>$({ref:e},c)),Re(...a))});return B("content.lazy")?tt(e).pipe(b(n=>n),Te(1),v(()=>o)):o}function za(e,{target$:t,print$:r}){let o=!0;return O(t.pipe(m(n=>n.closest("details:not([open])")),b(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(b(n=>n||!o),w(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Fn(e,t){return C(()=>{let r=new g;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),za(e,t).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}var Un=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel p,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel p{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}a .nodeLabel{text-decoration:underline}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var Gr,Qa=0;function Ka(){return typeof mermaid=="undefined"||mermaid instanceof Element?Tt("https://unpkg.com/mermaid@11/dist/mermaid.min.js"):I(void 0)}function Wn(e){return e.classList.remove("mermaid"),Gr||(Gr=Ka().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Un,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),G(1))),Gr.subscribe(()=>co(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${Qa++}`,r=x("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),a=r.attachShadow({mode:"closed"});a.innerHTML=n,e.replaceWith(r),i==null||i(a)})),Gr.pipe(m(()=>({ref:e})))}var Dn=x("table");function Vn(e){return e.replaceWith(Dn),Dn.replaceWith(An(e)),I({ref:e})}function Ya(e){let t=e.find(r=>r.checked)||e[0];return O(...e.map(r=>h(r,"change").pipe(m(()=>R(`label[for="${r.id}"]`))))).pipe(Q(R(`label[for="${t.id}"]`)),m(r=>({active:r})))}function Nn(e,{viewport$:t,target$:r}){let o=R(".tabbed-labels",e),n=P(":scope > input",e),i=Kr("prev");e.append(i);let a=Kr("next");return e.append(a),C(()=>{let s=new g,p=s.pipe(Z(),ie(!0));z([s,ge(e),tt(e)]).pipe(W(p),Me(1,me)).subscribe({next([{active:c},l]){let f=Ve(c),{width:u}=ce(c);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let d=pr(o);(f.xd.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),z([Ne(o),ge(o)]).pipe(W(p)).subscribe(([c,l])=>{let f=St(o);i.hidden=c.x<16,a.hidden=c.x>f.width-l.width-16}),O(h(i,"click").pipe(m(()=>-1)),h(a,"click").pipe(m(()=>1))).pipe(W(p)).subscribe(c=>{let{width:l}=ce(o);o.scrollBy({left:l*c,behavior:"smooth"})}),r.pipe(W(p),b(c=>n.includes(c))).subscribe(c=>c.click()),o.classList.add("tabbed-labels--linked");for(let c of n){let l=R(`label[for="${c.id}"]`);l.replaceChildren(x("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),h(l.firstElementChild,"click").pipe(W(p),b(f=>!(f.metaKey||f.ctrlKey)),w(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return B("content.tabs.link")&&s.pipe(Ce(1),re(t)).subscribe(([{active:c},{offset:l}])=>{let f=c.innerText.trim();if(c.hasAttribute("data-md-switching"))c.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let y of P("[data-tabs]"))for(let L of P(":scope > input",y)){let X=R(`label[for="${L.id}"]`);if(X!==c&&X.innerText.trim()===f){X.setAttribute("data-md-switching",""),L.click();break}}window.scrollTo({top:e.offsetTop-u});let d=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...d])])}}),s.pipe(W(p)).subscribe(()=>{for(let c of P("audio, video",e))c.pause()}),Ya(n).pipe(w(c=>s.next(c)),_(()=>s.complete()),m(c=>$({ref:e},c)))}).pipe(Ke(se))}function zn(e,{viewport$:t,target$:r,print$:o}){return O(...P(".annotate:not(.highlight)",e).map(n=>Pn(n,{target$:r,print$:o})),...P("pre:not(.mermaid) > code",e).map(n=>jn(n,{target$:r,print$:o})),...P("pre.mermaid",e).map(n=>Wn(n)),...P("table:not([class])",e).map(n=>Vn(n)),...P("details",e).map(n=>Fn(n,{target$:r,print$:o})),...P("[data-tabs]",e).map(n=>Nn(n,{viewport$:t,target$:r})),...P("[title]",e).filter(()=>B("content.tooltips")).map(n=>mt(n,{viewport$:t})))}function Ba(e,{alert$:t}){return t.pipe(v(r=>O(I(!0),I(!1).pipe(Ge(2e3))).pipe(m(o=>({message:r,active:o})))))}function qn(e,t){let r=R(".md-typeset",e);return C(()=>{let o=new g;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Ba(e,t).pipe(w(n=>o.next(n)),_(()=>o.complete()),m(n=>$({ref:e},n)))})}var Ga=0;function Ja(e,t){document.body.append(e);let{width:r}=ce(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=cr(t),n=typeof o!="undefined"?Ne(o):I({x:0,y:0}),i=O(et(t),$t(t)).pipe(K());return z([i,n]).pipe(m(([a,s])=>{let{x:p,y:c}=Ve(t),l=ce(t),f=t.closest("table");return f&&t.parentElement&&(p+=f.offsetLeft+t.parentElement.offsetLeft,c+=f.offsetTop+t.parentElement.offsetTop),{active:a,offset:{x:p-s.x+l.width/2-r/2,y:c-s.y+l.height+8}}}))}function Qn(e){let t=e.title;if(!t.length)return S;let r=`__tooltip_${Ga++}`,o=Rt(r,"inline"),n=R(".md-typeset",o);return n.innerHTML=t,C(()=>{let i=new g;return i.subscribe({next({offset:a}){o.style.setProperty("--md-tooltip-x",`${a.x}px`),o.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),O(i.pipe(b(({active:a})=>a)),i.pipe(_e(250),b(({active:a})=>!a))).subscribe({next({active:a}){a?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe(Me(16,me)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(pt(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?o.style.setProperty("--md-tooltip-0",`${-a}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Ja(o,e).pipe(w(a=>i.next(a)),_(()=>i.complete()),m(a=>$({ref:e},a)))}).pipe(Ke(se))}function Xa({viewport$:e}){if(!B("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Be(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),K()),o=ze("search");return z([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),K(),v(n=>n?r:I(!1)),Q(!1))}function Kn(e,t){return C(()=>z([ge(e),Xa(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),K((r,o)=>r.height===o.height&&r.hidden===o.hidden),G(1))}function Yn(e,{header$:t,main$:r}){return C(()=>{let o=new g,n=o.pipe(Z(),ie(!0));o.pipe(ee("active"),He(t)).subscribe(([{active:a},{hidden:s}])=>{e.classList.toggle("md-header--shadow",a&&!s),e.hidden=s});let i=ue(P("[title]",e)).pipe(b(()=>B("content.tooltips")),ne(a=>Qn(a)));return r.subscribe(o),t.pipe(W(n),m(a=>$({ref:e},a)),Re(i.pipe(W(n))))})}function Za(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=ce(e);return{active:o>=n}}),ee("active"))}function Bn(e,t){return C(()=>{let r=new g;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=fe(".md-content h1");return typeof o=="undefined"?S:Za(o,t).pipe(w(n=>r.next(n)),_(()=>r.complete()),m(n=>$({ref:e},n)))})}function Gn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),K()),n=o.pipe(v(()=>ge(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),ee("bottom"))));return z([o,n,t]).pipe(m(([i,{top:a,bottom:s},{offset:{y:p},size:{height:c}}])=>(c=Math.max(0,c-Math.max(0,a-p,i)-Math.max(0,c+p-s)),{offset:a-i,height:c,active:a-i<=p})),K((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function es(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return I(...e).pipe(ne(o=>h(o,"change").pipe(m(()=>o))),Q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),G(1))}function Jn(e){let t=P("input",e),r=x("meta",{name:"theme-color"});document.head.appendChild(r);let o=x("meta",{name:"color-scheme"});document.head.appendChild(o);let n=Pt("(prefers-color-scheme: light)");return C(()=>{let i=new g;return i.subscribe(a=>{if(document.body.setAttribute("data-md-color-switching",""),a.color.media==="(prefers-color-scheme)"){let s=matchMedia("(prefers-color-scheme: light)"),p=document.querySelector(s.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");a.color.scheme=p.getAttribute("data-md-color-scheme"),a.color.primary=p.getAttribute("data-md-color-primary"),a.color.accent=p.getAttribute("data-md-color-accent")}for(let[s,p]of Object.entries(a.color))document.body.setAttribute(`data-md-color-${s}`,p);for(let s=0;sa.key==="Enter"),re(i,(a,s)=>s)).subscribe(({index:a})=>{a=(a+1)%t.length,t[a].click(),t[a].focus()}),i.pipe(m(()=>{let a=Se("header"),s=window.getComputedStyle(a);return o.content=s.colorScheme,s.backgroundColor.match(/\d+/g).map(p=>(+p).toString(16).padStart(2,"0")).join("")})).subscribe(a=>r.content=`#${a}`),i.pipe(ve(se)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),es(t).pipe(W(n.pipe(Ce(1))),ct(),w(a=>i.next(a)),_(()=>i.complete()),m(a=>$({ref:e},a)))})}function Xn(e,{progress$:t}){return C(()=>{let r=new g;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(w(o=>r.next({value:o})),_(()=>r.complete()),m(o=>({ref:e,value:o})))})}var Jr=Mt(Br());function ts(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Zn({alert$:e}){Jr.default.isSupported()&&new j(t=>{new Jr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||ts(R(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>Ee("clipboard.copied"))).subscribe(e)}function ei(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function rs(e,t){let r=new Map;for(let o of P("url",e)){let n=R("loc",o),i=[ei(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let a of P("[rel=alternate]",o)){let s=a.getAttribute("href");s!=null&&i.push(ei(new URL(s),t))}}return r}function ur(e){return un(new URL("sitemap.xml",e)).pipe(m(t=>rs(t,new URL(e))),de(()=>I(new Map)))}function os(e,t){if(!(e.target instanceof Element))return S;let r=e.target.closest("a");if(r===null)return S;if(r.target||e.metaKey||e.ctrlKey)return S;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),I(new URL(r.href))):S}function ti(e){let t=new Map;for(let r of P(":scope > *",e.head))t.set(r.outerHTML,r);return t}function ri(e){for(let t of P("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return I(e)}function ns(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...B("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=fe(o),i=fe(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=ti(document);for(let[o,n]of ti(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values()){let n=o.getAttribute("name");n!=="theme-color"&&n!=="color-scheme"&&o.remove()}let r=Se("container");return We(P("script",r)).pipe(v(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new j(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),S}),Z(),ie(document))}function oi({location$:e,viewport$:t,progress$:r}){let o=xe();if(location.protocol==="file:")return S;let n=ur(o.base);I(document).subscribe(ri);let i=h(document.body,"click").pipe(He(n),v(([p,c])=>os(p,c)),pe()),a=h(window,"popstate").pipe(m(ye),pe());i.pipe(re(t)).subscribe(([p,{offset:c}])=>{history.replaceState(c,""),history.pushState(null,"",p)}),O(i,a).subscribe(e);let s=e.pipe(ee("pathname"),v(p=>fn(p,{progress$:r}).pipe(de(()=>(lt(p,!0),S)))),v(ri),v(ns),pe());return O(s.pipe(re(e,(p,c)=>c)),s.pipe(v(()=>e),ee("pathname"),v(()=>e),ee("hash")),e.pipe(K((p,c)=>p.pathname===c.pathname&&p.hash===c.hash),v(()=>i),w(()=>history.back()))).subscribe(p=>{var c,l;history.state!==null||!p.hash?window.scrollTo(0,(l=(c=history.state)==null?void 0:c.y)!=null?l:0):(history.scrollRestoration="auto",pn(p.hash),history.scrollRestoration="manual")}),e.subscribe(()=>{history.scrollRestoration="manual"}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),t.pipe(ee("offset"),_e(100)).subscribe(({offset:p})=>{history.replaceState(p,"")}),s}var ni=Mt(qr());function ii(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,a)=>`${i}${a}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(0,ni.default)(a).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function jt(e){return e.type===1}function dr(e){return e.type===3}function ai(e,t){let r=yn(e);return O(I(location.protocol!=="file:"),ze("search")).pipe(Ae(o=>o),v(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:B("search.suggest")}}})),r}function si(e){var l;let{selectedVersionSitemap:t,selectedVersionBaseURL:r,currentLocation:o,currentBaseURL:n}=e,i=(l=Xr(n))==null?void 0:l.pathname;if(i===void 0)return;let a=ss(o.pathname,i);if(a===void 0)return;let s=ps(t.keys());if(!t.has(s))return;let p=Xr(a,s);if(!p||!t.has(p.href))return;let c=Xr(a,r);if(c)return c.hash=o.hash,c.search=o.search,c}function Xr(e,t){try{return new URL(e,t)}catch(r){return}}function ss(e,t){if(e.startsWith(t))return e.slice(t.length)}function cs(e,t){let r=Math.min(e.length,t.length),o;for(o=0;oS)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:a,aliases:s})=>a===i||s.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),v(n=>h(document.body,"click").pipe(b(i=>!i.metaKey&&!i.ctrlKey),re(o),v(([i,a])=>{if(i.target instanceof Element){let s=i.target.closest("a");if(s&&!s.target&&n.has(s.href)){let p=s.href;return!i.target.closest(".md-version")&&n.get(p)===a?S:(i.preventDefault(),I(new URL(p)))}}return S}),v(i=>ur(i).pipe(m(a=>{var s;return(s=si({selectedVersionSitemap:a,selectedVersionBaseURL:i,currentLocation:ye(),currentBaseURL:t.base}))!=null?s:i})))))).subscribe(n=>lt(n,!0)),z([r,o]).subscribe(([n,i])=>{R(".md-header__topic").appendChild(Cn(n,i))}),e.pipe(v(()=>o)).subscribe(n=>{var a;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let s=((a=t.version)==null?void 0:a.default)||"latest";Array.isArray(s)||(s=[s]);e:for(let p of s)for(let c of n.aliases.concat(n.version))if(new RegExp(p,"i").test(c)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let s of ae("outdated"))s.hidden=!1})}function ls(e,{worker$:t}){let{searchParams:r}=ye();r.has("q")&&(Je("search",!0),e.value=r.get("q"),e.focus(),ze("search").pipe(Ae(i=>!i)).subscribe(()=>{let i=ye();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=et(e),n=O(t.pipe(Ae(jt)),h(e,"keyup"),o).pipe(m(()=>e.value),K());return z([n,o]).pipe(m(([i,a])=>({value:i,focus:a})),G(1))}function pi(e,{worker$:t}){let r=new g,o=r.pipe(Z(),ie(!0));z([t.pipe(Ae(jt)),r],(i,a)=>a).pipe(ee("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(ee("focus")).subscribe(({focus:i})=>{i&&Je("search",i)}),h(e.form,"reset").pipe(W(o)).subscribe(()=>e.focus());let n=R("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),ls(e,{worker$:t}).pipe(w(i=>r.next(i)),_(()=>r.complete()),m(i=>$({ref:e},i)),G(1))}function li(e,{worker$:t,query$:r}){let o=new g,n=on(e.parentElement).pipe(b(Boolean)),i=e.parentElement,a=R(":scope > :first-child",e),s=R(":scope > :last-child",e);ze("search").subscribe(l=>s.setAttribute("role",l?"list":"presentation")),o.pipe(re(r),Wr(t.pipe(Ae(jt)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:a.textContent=f.length?Ee("search.result.none"):Ee("search.result.placeholder");break;case 1:a.textContent=Ee("search.result.one");break;default:let u=sr(l.length);a.textContent=Ee("search.result.other",u)}});let p=o.pipe(w(()=>s.innerHTML=""),v(({items:l})=>O(I(...l.slice(0,10)),I(...l.slice(10)).pipe(Be(4),Vr(n),v(([f])=>f)))),m(Mn),pe());return p.subscribe(l=>s.appendChild(l)),p.pipe(ne(l=>{let f=fe("details",l);return typeof f=="undefined"?S:h(f,"toggle").pipe(W(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(b(dr),m(({data:l})=>l)).pipe(w(l=>o.next(l)),_(()=>o.complete()),m(l=>$({ref:e},l)))}function ms(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=ye();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function mi(e,t){let r=new g,o=r.pipe(Z(),ie(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(W(o)).subscribe(n=>n.preventDefault()),ms(e,t).pipe(w(n=>r.next(n)),_(()=>r.complete()),m(n=>$({ref:e},n)))}function fi(e,{worker$:t,keyboard$:r}){let o=new g,n=Se("search-query"),i=O(h(n,"keydown"),h(n,"focus")).pipe(ve(se),m(()=>n.value),K());return o.pipe(He(i),m(([{suggest:s},p])=>{let c=p.split(/([\s-]+)/);if(s!=null&&s.length&&c[c.length-1]){let l=s[s.length-1];l.startsWith(c[c.length-1])&&(c[c.length-1]=l)}else c.length=0;return c})).subscribe(s=>e.innerHTML=s.join("").replace(/\s/g," ")),r.pipe(b(({mode:s})=>s==="search")).subscribe(s=>{switch(s.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(b(dr),m(({data:s})=>s)).pipe(w(s=>o.next(s)),_(()=>o.complete()),m(()=>({ref:e})))}function ui(e,{index$:t,keyboard$:r}){let o=xe();try{let n=ai(o.search,t),i=Se("search-query",e),a=Se("search-result",e);h(e,"click").pipe(b(({target:p})=>p instanceof Element&&!!p.closest("a"))).subscribe(()=>Je("search",!1)),r.pipe(b(({mode:p})=>p==="search")).subscribe(p=>{let c=Ie();switch(p.type){case"Enter":if(c===i){let l=new Map;for(let f of P(":first-child [href]",a)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,d])=>d-u);f.click()}p.claim()}break;case"Escape":case"Tab":Je("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof c=="undefined")i.focus();else{let l=[i,...P(":not(details) > [href], summary, details[open] [href]",a)],f=Math.max(0,(Math.max(0,l.indexOf(c))+l.length+(p.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}p.claim();break;default:i!==Ie()&&i.focus()}}),r.pipe(b(({mode:p})=>p==="global")).subscribe(p=>{switch(p.type){case"f":case"s":case"/":i.focus(),i.select(),p.claim();break}});let s=pi(i,{worker$:n});return O(s,li(a,{worker$:n,query$:s})).pipe(Re(...ae("search-share",e).map(p=>mi(p,{query$:s})),...ae("search-suggest",e).map(p=>fi(p,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ye}}function di(e,{index$:t,location$:r}){return z([t,r.pipe(Q(ye()),b(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>ii(o.config)(n.searchParams.get("h"))),m(o=>{var a;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let s=i.nextNode();s;s=i.nextNode())if((a=s.parentElement)!=null&&a.offsetHeight){let p=s.textContent,c=o(p);c.length>p.length&&n.set(s,c)}for(let[s,p]of n){let{childNodes:c}=x("span",null,p);s.replaceWith(...Array.from(c))}return{ref:e,nodes:n}}))}function fs(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return z([r,t]).pipe(m(([{offset:i,height:a},{offset:{y:s}}])=>(a=a+Math.min(n,Math.max(0,s-i))-n,{height:a,locked:s>=i+n})),K((i,a)=>i.height===a.height&&i.locked===a.locked))}function Zr(e,o){var n=o,{header$:t}=n,r=so(n,["header$"]);let i=R(".md-sidebar__scrollwrap",e),{y:a}=Ve(i);return C(()=>{let s=new g,p=s.pipe(Z(),ie(!0)),c=s.pipe(Me(0,me));return c.pipe(re(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*a}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),c.pipe(Ae()).subscribe(()=>{for(let l of P(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ce(f);f.scrollTo({top:u-d/2})}}}),ue(P("label[tabindex]",e)).pipe(ne(l=>h(l,"click").pipe(ve(se),m(()=>l),W(p)))).subscribe(l=>{let f=R(`[id="${l.htmlFor}"]`);R(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),fs(e,r).pipe(w(l=>s.next(l)),_(()=>s.complete()),m(l=>$({ref:e},l)))})}function hi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return st(je(`${r}/releases/latest`).pipe(de(()=>S),m(o=>({version:o.tag_name})),De({})),je(r).pipe(de(()=>S),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),De({}))).pipe(m(([o,n])=>$($({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return je(r).pipe(m(o=>({repositories:o.public_repos})),De({}))}}function bi(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return st(je(`${r}/releases/permalink/latest`).pipe(de(()=>S),m(({tag_name:o})=>({version:o})),De({})),je(r).pipe(de(()=>S),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),De({}))).pipe(m(([o,n])=>$($({},o),n)))}function vi(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return hi(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return bi(r,o)}return S}var us;function ds(e){return us||(us=C(()=>{let t=__md_get("__source",sessionStorage);if(t)return I(t);if(ae("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return S}return vi(e.href).pipe(w(o=>__md_set("__source",o,sessionStorage)))}).pipe(de(()=>S),b(t=>Object.keys(t).length>0),m(t=>({facts:t})),G(1)))}function gi(e){let t=R(":scope > :last-child",e);return C(()=>{let r=new g;return r.subscribe(({facts:o})=>{t.appendChild(_n(o)),t.classList.add("md-source__repository--active")}),ds(e).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}function hs(e,{viewport$:t,header$:r}){return ge(document.body).pipe(v(()=>mr(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),ee("hidden"))}function yi(e,t){return C(()=>{let r=new g;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(B("navigation.tabs.sticky")?I({hidden:!1}):hs(e,t)).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}function bs(e,{viewport$:t,header$:r}){let o=new Map,n=P(".md-nav__link",e);for(let s of n){let p=decodeURIComponent(s.hash.substring(1)),c=fe(`[id="${p}"]`);typeof c!="undefined"&&o.set(s,c)}let i=r.pipe(ee("height"),m(({height:s})=>{let p=Se("main"),c=R(":scope > :first-child",p);return s+.8*(c.offsetTop-p.offsetTop)}),pe());return ge(document.body).pipe(ee("height"),v(s=>C(()=>{let p=[];return I([...o].reduce((c,[l,f])=>{for(;p.length&&o.get(p[p.length-1]).tagName>=f.tagName;)p.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return c.set([...p=[...p,l]].reverse(),u)},new Map))}).pipe(m(p=>new Map([...p].sort(([,c],[,l])=>c-l))),He(i),v(([p,c])=>t.pipe(Fr(([l,f],{offset:{y:u},size:d})=>{let y=u+d.height>=Math.floor(s.height);for(;f.length;){let[,L]=f[0];if(L-c=u&&!y)f=[l.pop(),...f];else break}return[l,f]},[[],[...p]]),K((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([s,p])=>({prev:s.map(([c])=>c),next:p.map(([c])=>c)})),Q({prev:[],next:[]}),Be(2,1),m(([s,p])=>s.prev.length{let i=new g,a=i.pipe(Z(),ie(!0));if(i.subscribe(({prev:s,next:p})=>{for(let[c]of p)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[l]]of s.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",c===s.length-1)}),B("toc.follow")){let s=O(t.pipe(_e(1),m(()=>{})),t.pipe(_e(250),m(()=>"smooth")));i.pipe(b(({prev:p})=>p.length>0),He(o.pipe(ve(se))),re(s)).subscribe(([[{prev:p}],c])=>{let[l]=p[p.length-1];if(l.offsetHeight){let f=cr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ce(f);f.scrollTo({top:u-d/2,behavior:c})}}})}return B("navigation.tracking")&&t.pipe(W(a),ee("offset"),_e(250),Ce(1),W(n.pipe(Ce(1))),ct({delay:250}),re(i)).subscribe(([,{prev:s}])=>{let p=ye(),c=s[s.length-1];if(c&&c.length){let[l]=c,{hash:f}=new URL(l.href);p.hash!==f&&(p.hash=f,history.replaceState({},"",`${p}`))}else p.hash="",history.replaceState({},"",`${p}`)}),bs(e,{viewport$:t,header$:r}).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))})}function vs(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:a}})=>a),Be(2,1),m(([a,s])=>a>s&&s>0),K()),i=r.pipe(m(({active:a})=>a));return z([i,n]).pipe(m(([a,s])=>!(a&&s)),K(),W(o.pipe(Ce(1))),ie(!0),ct({delay:250}),m(a=>({hidden:a})))}function Ei(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new g,a=i.pipe(Z(),ie(!0));return i.subscribe({next({hidden:s}){e.hidden=s,s?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(W(a),ee("height")).subscribe(({height:s})=>{e.style.top=`${s+16}px`}),h(e,"click").subscribe(s=>{s.preventDefault(),window.scrollTo({top:0})}),vs(e,{viewport$:t,main$:o,target$:n}).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))}function wi({document$:e,viewport$:t}){e.pipe(v(()=>P(".md-ellipsis")),ne(r=>tt(r).pipe(W(e.pipe(Ce(1))),b(o=>o),m(()=>r),Te(1))),b(r=>r.offsetWidth{let o=r.innerText,n=r.closest("a")||r;return n.title=o,B("content.tooltips")?mt(n,{viewport$:t}).pipe(W(e.pipe(Ce(1))),_(()=>n.removeAttribute("title"))):S})).subscribe(),B("content.tooltips")&&e.pipe(v(()=>P(".md-status")),ne(r=>mt(r,{viewport$:t}))).subscribe()}function Ti({document$:e,tablet$:t}){e.pipe(v(()=>P(".md-toggle--indeterminate")),w(r=>{r.indeterminate=!0,r.checked=!1}),ne(r=>h(r,"change").pipe(Dr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),re(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function gs(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Si({document$:e}){e.pipe(v(()=>P("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),b(gs),ne(t=>h(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Oi({viewport$:e,tablet$:t}){z([ze("search"),t]).pipe(m(([r,o])=>r&&!o),v(r=>I(r).pipe(Ge(r?400:100))),re(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function ys(){return location.protocol==="file:"?Tt(`${new URL("search/search_index.js",eo.base)}`).pipe(m(()=>__index),G(1)):je(new URL("search/search_index.json",eo.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var ot=Go(),Ut=sn(),Lt=ln(Ut),to=an(),Oe=gn(),hr=Pt("(min-width: 960px)"),Mi=Pt("(min-width: 1220px)"),_i=mn(),eo=xe(),Ai=document.forms.namedItem("search")?ys():Ye,ro=new g;Zn({alert$:ro});var oo=new g;B("navigation.instant")&&oi({location$:Ut,viewport$:Oe,progress$:oo}).subscribe(ot);var Li;((Li=eo.version)==null?void 0:Li.provider)==="mike"&&ci({document$:ot});O(Ut,Lt).pipe(Ge(125)).subscribe(()=>{Je("drawer",!1),Je("search",!1)});to.pipe(b(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=fe("link[rel=prev]");typeof t!="undefined"&<(t);break;case"n":case".":let r=fe("link[rel=next]");typeof r!="undefined"&<(r);break;case"Enter":let o=Ie();o instanceof HTMLLabelElement&&o.click()}});wi({viewport$:Oe,document$:ot});Ti({document$:ot,tablet$:hr});Si({document$:ot});Oi({viewport$:Oe,tablet$:hr});var rt=Kn(Se("header"),{viewport$:Oe}),Ft=ot.pipe(m(()=>Se("main")),v(e=>Gn(e,{viewport$:Oe,header$:rt})),G(1)),xs=O(...ae("consent").map(e=>En(e,{target$:Lt})),...ae("dialog").map(e=>qn(e,{alert$:ro})),...ae("palette").map(e=>Jn(e)),...ae("progress").map(e=>Xn(e,{progress$:oo})),...ae("search").map(e=>ui(e,{index$:Ai,keyboard$:to})),...ae("source").map(e=>gi(e))),Es=C(()=>O(...ae("announce").map(e=>xn(e)),...ae("content").map(e=>zn(e,{viewport$:Oe,target$:Lt,print$:_i})),...ae("content").map(e=>B("search.highlight")?di(e,{index$:Ai,location$:Ut}):S),...ae("header").map(e=>Yn(e,{viewport$:Oe,header$:rt,main$:Ft})),...ae("header-title").map(e=>Bn(e,{viewport$:Oe,header$:rt})),...ae("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Nr(Mi,()=>Zr(e,{viewport$:Oe,header$:rt,main$:Ft})):Nr(hr,()=>Zr(e,{viewport$:Oe,header$:rt,main$:Ft}))),...ae("tabs").map(e=>yi(e,{viewport$:Oe,header$:rt})),...ae("toc").map(e=>xi(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Lt})),...ae("top").map(e=>Ei(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Lt})))),Ci=ot.pipe(v(()=>Es),Re(xs),G(1));Ci.subscribe();window.document$=ot;window.location$=Ut;window.target$=Lt;window.keyboard$=to;window.viewport$=Oe;window.tablet$=hr;window.screen$=Mi;window.print$=_i;window.alert$=ro;window.progress$=oo;window.component$=Ci;})(); +//# sourceMappingURL=bundle.83f73b43.min.js.map + diff --git a/assets/javascripts/bundle.83f73b43.min.js.map b/assets/javascripts/bundle.83f73b43.min.js.map new file mode 100644 index 0000000..fe920b7 --- /dev/null +++ b/assets/javascripts/bundle.83f73b43.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/escape-html/index.js", "node_modules/clipboard/dist/clipboard.js", "src/templates/assets/javascripts/bundle.ts", "node_modules/tslib/tslib.es6.mjs", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/BehaviorSubject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/QueueAction.ts", "node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts", "node_modules/rxjs/src/internal/scheduler/queue.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/debounce.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/first.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/templates/assets/javascripts/browser/document/index.ts", "src/templates/assets/javascripts/browser/element/_/index.ts", "src/templates/assets/javascripts/browser/element/focus/index.ts", "src/templates/assets/javascripts/browser/element/hover/index.ts", "src/templates/assets/javascripts/utilities/h/index.ts", "src/templates/assets/javascripts/utilities/round/index.ts", "src/templates/assets/javascripts/browser/script/index.ts", "src/templates/assets/javascripts/browser/element/size/_/index.ts", "src/templates/assets/javascripts/browser/element/size/content/index.ts", "src/templates/assets/javascripts/browser/element/offset/_/index.ts", "src/templates/assets/javascripts/browser/element/offset/content/index.ts", "src/templates/assets/javascripts/browser/element/visibility/index.ts", "src/templates/assets/javascripts/browser/toggle/index.ts", "src/templates/assets/javascripts/browser/keyboard/index.ts", "src/templates/assets/javascripts/browser/location/_/index.ts", "src/templates/assets/javascripts/browser/location/hash/index.ts", "src/templates/assets/javascripts/browser/media/index.ts", "src/templates/assets/javascripts/browser/request/index.ts", "src/templates/assets/javascripts/browser/viewport/offset/index.ts", "src/templates/assets/javascripts/browser/viewport/size/index.ts", "src/templates/assets/javascripts/browser/viewport/_/index.ts", "src/templates/assets/javascripts/browser/viewport/at/index.ts", "src/templates/assets/javascripts/browser/worker/index.ts", "src/templates/assets/javascripts/_/index.ts", "src/templates/assets/javascripts/components/_/index.ts", "src/templates/assets/javascripts/components/announce/index.ts", "src/templates/assets/javascripts/components/consent/index.ts", "src/templates/assets/javascripts/templates/tooltip/index.tsx", "src/templates/assets/javascripts/templates/annotation/index.tsx", "src/templates/assets/javascripts/templates/clipboard/index.tsx", "src/templates/assets/javascripts/templates/search/index.tsx", "src/templates/assets/javascripts/templates/source/index.tsx", "src/templates/assets/javascripts/templates/tabbed/index.tsx", "src/templates/assets/javascripts/templates/table/index.tsx", "src/templates/assets/javascripts/templates/version/index.tsx", "src/templates/assets/javascripts/components/tooltip2/index.ts", "src/templates/assets/javascripts/components/content/annotation/_/index.ts", "src/templates/assets/javascripts/components/content/annotation/list/index.ts", "src/templates/assets/javascripts/components/content/annotation/block/index.ts", "src/templates/assets/javascripts/components/content/code/_/index.ts", "src/templates/assets/javascripts/components/content/details/index.ts", "src/templates/assets/javascripts/components/content/mermaid/index.css", "src/templates/assets/javascripts/components/content/mermaid/index.ts", "src/templates/assets/javascripts/components/content/table/index.ts", "src/templates/assets/javascripts/components/content/tabs/index.ts", "src/templates/assets/javascripts/components/content/_/index.ts", "src/templates/assets/javascripts/components/dialog/index.ts", "src/templates/assets/javascripts/components/tooltip/index.ts", "src/templates/assets/javascripts/components/header/_/index.ts", "src/templates/assets/javascripts/components/header/title/index.ts", "src/templates/assets/javascripts/components/main/index.ts", "src/templates/assets/javascripts/components/palette/index.ts", "src/templates/assets/javascripts/components/progress/index.ts", "src/templates/assets/javascripts/integrations/clipboard/index.ts", "src/templates/assets/javascripts/integrations/sitemap/index.ts", "src/templates/assets/javascripts/integrations/instant/index.ts", "src/templates/assets/javascripts/integrations/search/highlighter/index.ts", "src/templates/assets/javascripts/integrations/search/worker/message/index.ts", "src/templates/assets/javascripts/integrations/search/worker/_/index.ts", "src/templates/assets/javascripts/integrations/version/findurl/index.ts", "src/templates/assets/javascripts/integrations/version/index.ts", "src/templates/assets/javascripts/components/search/query/index.ts", "src/templates/assets/javascripts/components/search/result/index.ts", "src/templates/assets/javascripts/components/search/share/index.ts", "src/templates/assets/javascripts/components/search/suggest/index.ts", "src/templates/assets/javascripts/components/search/_/index.ts", "src/templates/assets/javascripts/components/search/highlight/index.ts", "src/templates/assets/javascripts/components/sidebar/index.ts", "src/templates/assets/javascripts/components/source/facts/github/index.ts", "src/templates/assets/javascripts/components/source/facts/gitlab/index.ts", "src/templates/assets/javascripts/components/source/facts/_/index.ts", "src/templates/assets/javascripts/components/source/_/index.ts", "src/templates/assets/javascripts/components/tabs/index.ts", "src/templates/assets/javascripts/components/toc/index.ts", "src/templates/assets/javascripts/components/top/index.ts", "src/templates/assets/javascripts/patches/ellipsis/index.ts", "src/templates/assets/javascripts/patches/indeterminate/index.ts", "src/templates/assets/javascripts/patches/scrollfix/index.ts", "src/templates/assets/javascripts/patches/scrolllock/index.ts", "src/templates/assets/javascripts/polyfills/index.ts"], + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*\n * Copyright (c) 2016-2024 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"focus-visible\"\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getActiveElement,\n getOptionalElement,\n requestJSON,\n setLocation,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchScript,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountProgress,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantNavigation,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchEllipsis,\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Functions - @todo refactor\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch search index\n *\n * @returns Search index observable\n */\nfunction fetchSearchIndex(): Observable {\n if (location.protocol === \"file:\") {\n return watchScript(\n `${new URL(\"search/search_index.js\", config.base)}`\n )\n .pipe(\n // @ts-ignore - @todo fix typings\n map(() => __index),\n shareReplay(1)\n )\n } else {\n return requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget(location$)\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? fetchSearchIndex()\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up progress indicator */\nconst progress$ = new Subject()\n\n/* Set up instant navigation, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantNavigation({ location$, viewport$, progress$ })\n .subscribe(document$)\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"link[rel=prev]\")\n if (typeof prev !== \"undefined\")\n setLocation(prev)\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"link[rel=next]\")\n if (typeof next !== \"undefined\")\n setLocation(next)\n break\n\n /* Expand navigation, see https://bit.ly/3ZjG5io */\n case \"Enter\":\n const active = getActiveElement()\n if (active instanceof HTMLLabelElement)\n active.click()\n }\n })\n\n/* Set up patches */\npatchEllipsis({ viewport$, document$ })\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Progress bar */\n ...getComponentElements(\"progress\")\n .map(el => mountProgress(el, { progress$ })),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, {\n viewport$, header$, main$, target$\n })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.progress$ = progress$ /* Progress indicator subject */\nwindow.component$ = component$ /* Component observable */\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver implements Observer {\n constructor(private partialObserver: Partial>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction,\n ...fns: UnaryFunction[]\n): UnaryFunction;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate(\n init: (liftedSource: Observable, subscriber: Subscriber) => (() => void) | void\n): OperatorFunction {\n return (source: Observable) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber, liftedSource: Observable) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n\n getValue(): T {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n\n next(value: T): void {\n super.next((this._value = value));\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction extends Action {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\nimport { TimerHandle } from './timerHandle';\n\nexport class QueueAction extends AsyncAction {\n constructor(protected scheduler: QueueScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay);\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n\n // Otherwise flush the scheduler starting with this action.\n scheduler.flush(this);\n\n // HACK: In the past, this was returning `void`. However, `void` isn't a valid\n // `TimerHandle`, and generally the return value here isn't really used. So the\n // compromise is to return `0` which is both \"falsy\" and a valid `TimerHandle`,\n // as opposed to refactoring every other instanceo of `requestAsyncId`.\n return 0;\n }\n}\n", "import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n", "import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\n\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.\n */\nexport const queue = queueScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html: