{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"remotion-best-practices","type":"registry:item","title":"remotion-best-practices","description":"Router for all Remotion skills","author":"remotion-dev/skills <https://skills.sh/remotion-dev/skills/remotion-best-practices>","files":[{"path":"agents/openai.yaml","content":"interface:\n  display_name: '/remotion-best-practices'\n  short_description: 'Route Remotion tasks to the right workflow'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-best-practices: Make a promo video for my product'\n","type":"registry:file","target":"~/skills/remotion-best-practices/agents/openai.yaml"},{"path":"assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/assets/remotion-icon.svg"},{"path":"remotion-captions/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-captions'\n  short_description: 'Transcribe, display, and animate captions'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-captions: Transcribe my video and display captions'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-captions/agents/openai.yaml"},{"path":"remotion-captions/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.svg"},{"path":"remotion-captions/display-captions.md","content":"---\nname: display-captions\ndescription: Displaying captions in Remotion using the Basic Captions element\nmetadata:\n  tags: captions, subtitles, display, element\n---\n\n# Displaying captions in Remotion\n\nThis guide explains how to display captions in Remotion, assuming you already have captions in the [`Caption`](https://www.remotion.dev/docs/captions/caption.md) format.\n\n## Prerequisites\n\nRead [Transcribing audio](transcribe-captions.md) for how to generate captions.\n\nFirst, the [`@remotion/captions`](https://www.remotion.dev/docs/captions.md) package needs to be installed.\nIf it is not installed, use the following command:\n\n```bash\nnpx remotion add @remotion/captions # If project uses npm\nbunx remotion add @remotion/captions # If project uses bun\nyarn remotion add @remotion/captions # If project uses yarn\npnpm exec remotion add @remotion/captions # If project uses pnpm\n```\n\n## Adding the Basic Captions element\n\nUse the [Basic Captions](https://www.remotion.dev/elements/captions/basic-captions) element to display captions.\n\nAlternatives are available at [Remotion Captions Elements](https://www.remotion.dev/elements/captions), but use Basic Captions unless there are more precise specifications.\n\nFetch its source code from https://www.remotion.dev/elements/captions/basic-captions.md and copy the `basic-captions.tsx` file into the project unchanged.\n\n## Displaying captions alongside video content\n\nKeep each clip's video and captions inside the same `<Sequence>` or `<TransitionSeries.Sequence>`.\nPut the clip's `trimBefore`, `durationInFrames`, and `playbackRate` on that shared parent so trimming or changing the speed affects both.  \nFor independently positioned clips, put `from` on the shared `<Sequence>` too.\n\nGive every captioned clip its own group and inline caption array; do not combine captions from multiple clips into one overlay outside the scene timeline.  \nMoving, reordering, trimming, or deleting the group then affects its video and captions together.\n\nPutting captions inside a scene is insufficient if `trimBefore` or `playbackRate` is still applied only to `<Video>`: its sibling captions do not inherit those props. Apply them to the shared parent instead.\n\nThe Caption editor writes back to the array literal on the selected `<BasicCaptions>` source node, so inline the captions directly in its `captions` prop.  \nPassing a variable or component prop such as `captions={captions}` leaves no source array for the editor to update.  \nIf the captions were transcribed to a JSON file, copy its contents into the prop.\n\nGive the caption area a width and position it over the video. In this\n1920px-wide composition, the 900px caption area is centered by translating it\n`(1920 - 900) / 2 = 510` pixels from the left:\n\n```tsx title=\"src/MyComposition.tsx\"\nimport { Video } from \"@remotion/media\";\nimport { TransitionSeries } from \"@remotion/transitions\";\nimport { staticFile, useVideoConfig } from \"remotion\";\nimport { BasicCaptions } from \"./basic-captions\";\n\nexport const MyComposition: React.FC = () => {\n  const { fps } = useVideoConfig();\n\n  return (\n    <TransitionSeries>\n      <TransitionSeries.Sequence\n        name=\"Opening\"\n        trimBefore={4 * fps}\n        durationInFrames={20 * fps}\n      >\n        <Video\n          name=\"Opening footage\"\n          src={staticFile(\"opening.mp4\")}\n          objectFit=\"cover\"\n          style={{ width: \"100%\", height: \"100%\" }}\n        />\n        <BasicCaptions\n          name=\"Opening captions\"\n          width={900}\n          style={{\n            position: \"absolute\",\n            bottom: 120,\n            translate: \"510px 0px\",\n          }}\n          captions={[\n            {\n              text: \"Hello\",\n              startMs: 5000,\n              endMs: 5400,\n              timestampMs: 5200,\n              confidence: null,\n            },\n            {\n              text: \" world\",\n              startMs: 5400,\n              endMs: 5900,\n              timestampMs: 5650,\n              confidence: null,\n            },\n          ]}\n        />\n      </TransitionSeries.Sequence>\n      <TransitionSeries.Sequence\n        name=\"Next clip\"\n        trimBefore={1 * fps}\n        durationInFrames={5 * fps}\n      >\n        <Video\n          name=\"Next footage\"\n          src={staticFile(\"next.mp4\")}\n          objectFit=\"cover\"\n          style={{ width: \"100%\", height: \"100%\" }}\n        />\n        <BasicCaptions\n          name=\"Next captions\"\n          width={900}\n          style={{\n            position: \"absolute\",\n            bottom: 120,\n            translate: \"510px 0px\",\n          }}\n          captions={[\n            {\n              text: \"Next\",\n              startMs: 2000,\n              endMs: 2400,\n              timestampMs: 2200,\n              confidence: null,\n            },\n            {\n              text: \" clip\",\n              startMs: 2400,\n              endMs: 2900,\n              timestampMs: 2650,\n              confidence: null,\n            },\n          ]}\n        />\n      </TransitionSeries.Sequence>\n    </TransitionSeries>\n  );\n};\n```\n\n```tsx title=\"src/Root.tsx\"\nimport { Composition } from \"remotion\";\nimport { MyComposition } from \"./MyComposition\";\n\nexport const RemotionRoot = () => {\n  return (\n    <Composition\n      id=\"MyComposition\"\n      component={MyComposition}\n      durationInFrames={750}\n      fps={30}\n      width={1920}\n      height={1080}\n    />\n  );\n};\n```\n\nTo change a captioned clip's speed, set `playbackRate` on its shared sequence.\n`durationInFrames` selects a range of source frames; the group occupies `durationInFrames / playbackRate` frames in its parent timeline.\nUpdate the composition duration when changing the total timeline length.\n\nIf a caption has `pageBreakAfter: true`, the current page ends after that caption and the next caption starts a new page.\n\n## White-space preservation\n\nThe captions are whitespace sensitive. You should include spaces in the `text` field before each word.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-captions/display-captions.md"},{"path":"remotion-captions/import-srt-captions.md","content":"---\nname: import-srt-captions\ndescription: Importing .srt subtitle files into Remotion using @remotion/captions\nmetadata:\n  tags: captions, subtitles, srt, import, parse\n---\n\n# Importing .srt subtitles into Remotion\n\nIf you have an existing `.srt` subtitle file, you can import it into Remotion using `parseSrt()` from `@remotion/captions`.\n\nIf you don't have a .srt file, read [Transcribing audio](transcribe-captions.md) for how to generate captions instead.\n\n## Prerequisites\n\nFirst, the @remotion/captions package needs to be installed.\nIf it is not installed, use the following command:\n\n```bash\nnpx remotion add @remotion/captions # If project uses npm\nbunx remotion add @remotion/captions # If project uses bun\nyarn remotion add @remotion/captions # If project uses yarn\npnpm exec remotion add @remotion/captions # If project uses pnpm\n```\n\n## Reading an .srt file\n\nUse `staticFile()` to reference an `.srt` file in your `public` folder, then fetch and parse it:\n\n```tsx\nimport { useState, useEffect, useCallback } from \"react\";\nimport { staticFile, useDelayRender } from \"remotion\";\nimport { parseSrt } from \"@remotion/captions\";\nimport type { Caption } from \"@remotion/captions\";\n\nexport const MyComponent: React.FC = () => {\n  const [captions, setCaptions] = useState<Caption[] | null>(null);\n  const { delayRender, continueRender, cancelRender } = useDelayRender();\n  const [handle] = useState(() => delayRender());\n\n  const fetchCaptions = useCallback(async () => {\n    try {\n      const response = await fetch(staticFile(\"subtitles.srt\"));\n      const text = await response.text();\n      const { captions: parsed } = parseSrt({ input: text });\n      setCaptions(parsed);\n      continueRender(handle);\n    } catch (e) {\n      cancelRender(e);\n    }\n  }, [continueRender, cancelRender, handle]);\n\n  useEffect(() => {\n    fetchCaptions();\n  }, [fetchCaptions]);\n\n  if (!captions) {\n    return null;\n  }\n\n  return (\n    <>\n      {/* Use captions here */}\n    </>\n  );\n};\n```\n\nRemote URLs are also supported - you can `fetch()` a remote file via URL instead of using `staticFile()`.\n\n## Using imported captions\n\nOnce parsed, the captions are in the `Caption` format and can be used with all `@remotion/captions` utilities.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-captions/import-srt-captions.md"},{"path":"remotion-captions/REFERENCE.md","content":"---\nname: remotion-captions\ndescription: Transcribing, displaying and animating captions\nversion: 4.0.540\n---\n\nAll captions must be processed in JSON. The captions must use the [`Caption`](https://www.remotion.dev/docs/captions/caption.md) type which is the following:\n\n```ts\nimport type { Caption } from \"@remotion/captions\";\n```\n\nThis is the definition:\n\n```ts\ntype Caption = {\n  text: string;\n  startMs: number;\n  endMs: number;\n  timestampMs: number | null;\n  confidence: number | null;\n  pageBreakAfter?: boolean;\n};\n```\n\n## Generating captions\n\nTo transcribe video and audio files to generate captions, load the [transcribe-captions.md](transcribe-captions.md) file for more instructions.\n\n## Displaying captions\n\nTo display captions in your video, load the [display-captions.md](display-captions.md) file for more instructions.\n\n## Importing captions\n\nTo import captions from a .srt file, load the [import-srt-captions.md](import-srt-captions.md) file for more instructions.\n\n## Post-creation\n\nAfter you're done, load this skill: [Remotion Best Practices](../SKILL.md)\n\nIf not alreay done, open the Remotion Studio, unless instructed otherwise.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-captions/REFERENCE.md"},{"path":"remotion-captions/transcribe-captions.md","content":"# Transcribing audio\n\nTo transcribe audio to generate captions in Remotion, use the [`transcribe()`](https://www.remotion.dev/docs/whisper-webgpu/transcribe.md) function from the [`@remotion/whisper-webgpu`](https://www.remotion.dev/docs/whisper-webgpu.md) package.\nIt runs Whisper locally on the GPU and works in both Node.js and the browser.\n\n## Prerequisites\n\nInstall the required packages if they are not installed:\n\n```bash\nnpx remotion add @remotion/whisper-webgpu @huggingface/transformers mediabunny @mediabunny/server # If project uses npm\nbunx remotion add @remotion/whisper-webgpu @huggingface/transformers mediabunny @mediabunny/server # If project uses bun\nyarn remotion add @remotion/whisper-webgpu @huggingface/transformers mediabunny @mediabunny/server # If project uses yarn\npnpm exec remotion add @remotion/whisper-webgpu @huggingface/transformers mediabunny @mediabunny/server # If project uses pnpm\n```\n\nA compatible GPU is required. ONNX Runtime does not work on Linux arm64.\n\n## Transcribing\n\nMake a Node.js script that decodes the audio to a 16kHz mono waveform, downloads a model, and transcribes it.\n\n```ts\nimport { registerMediabunnyServer } from \"@mediabunny/server\";\nimport {\n  WHISPER_WEBGPU_SAMPLE_RATE,\n  canUseWhisperWebGpu,\n  downloadWhisperModel,\n  loadWhisperModel,\n  toCaptions,\n  transcribe,\n} from \"@remotion/whisper-webgpu\";\nimport {\n  ALL_FORMATS,\n  Conversion,\n  FilePathSource,\n  Input,\n  NullTarget,\n  Output,\n  WavOutputFormat,\n} from \"mediabunny\";\nimport { writeFile } from \"node:fs/promises\";\n\nregisterMediabunnyServer();\n\nconst support = await canUseWhisperWebGpu();\nif (!support.supported) {\n  throw new Error(support.detailedReason);\n}\n\ntype WaveformChunk = {\n  startFrame: number;\n  waveform: Float32Array;\n};\nconst chunks: WaveformChunk[] = [];\n\nusing input = new Input({\n  formats: ALL_FORMATS,\n  source: new FilePathSource(\"public/video123.mp4\"),\n});\nconst audioTrack = await input.getPrimaryAudioTrack();\nif (audioTrack === null) {\n  throw new Error(\"The media does not contain an audio track.\");\n}\n\nconst conversion = await Conversion.init({\n  input,\n  output: new Output({\n    format: new WavOutputFormat(),\n    target: new NullTarget(),\n  }),\n  video: { discard: true },\n  audio: (track) => {\n    if (track.id !== audioTrack.id) {\n      return { discard: true };\n    }\n\n    return {\n      codec: \"pcm-f32\",\n      forceTranscode: true,\n      numberOfChannels: 1,\n      sampleFormat: \"f32\",\n      sampleRate: WHISPER_WEBGPU_SAMPLE_RATE,\n      process: (sample) => {\n        const waveform = new Float32Array(\n          sample.allocationSize({ format: \"f32\", planeIndex: 0 }) /\n            Float32Array.BYTES_PER_ELEMENT,\n        );\n        sample.copyTo(waveform, { format: \"f32\", planeIndex: 0 });\n        chunks.push({\n          startFrame: Math.round(sample.timestamp * WHISPER_WEBGPU_SAMPLE_RATE),\n          waveform,\n        });\n        return sample;\n      },\n    };\n  },\n});\n\nif (!conversion.isValid) {\n  throw new Error(\"The audio track cannot be decoded.\");\n}\n\nawait conversion.execute();\n\nconst waveformLength = chunks.reduce(\n  (max, chunk) => Math.max(max, chunk.startFrame + chunk.waveform.length),\n  0,\n);\nconst channelWaveform = new Float32Array(waveformLength);\nfor (const chunk of chunks) {\n  const destinationStart = Math.max(0, chunk.startFrame);\n  const sourceStart = Math.max(0, -chunk.startFrame);\n  const availableLength = Math.min(\n    chunk.waveform.length - sourceStart,\n    channelWaveform.length - destinationStart,\n  );\n\n  if (availableLength > 0) {\n    channelWaveform.set(\n      chunk.waveform.subarray(sourceStart, sourceStart + availableLength),\n      destinationStart,\n    );\n  }\n}\n\nconst model = \"small.en\";\nawait downloadWhisperModel({ model });\nawait using modelHandle = await loadWhisperModel({ model });\nconst transcription = await transcribe({ channelWaveform, model });\nconst { captions } = toCaptions({ whisperWebGpuOutput: transcription });\n\n// Write it to a file so the captions can be inlined into the Remotion code\nawait writeFile(\"captions123.json\", JSON.stringify(captions, null, 2));\n```\n\n## Choosing a model\n\n`small.en` is the recommended default for English.  \nFor other languages, use a multilingual model such as `small` and pass the `language` option to `transcribe()` - automatic language detection is not supported.  \nSee [`getAvailableModels()`](https://www.remotion.dev/docs/whisper-webgpu/get-available-models.md) for all models.\n\n## Transcribing in the browser\n\nIn the browser, use [`resampleTo16Khz()`](https://www.remotion.dev/docs/whisper-webgpu/resample-to-16khz.md) to get the waveform from a `File` instead of using Mediabunny:\n\n```ts\nimport {\n  downloadWhisperModel,\n  resampleTo16Khz,\n  toCaptions,\n  transcribe,\n} from \"@remotion/whisper-webgpu\";\n\nexport const transcribeFile = async (file: File) => {\n  await downloadWhisperModel({ model: \"small.en\" });\n  const channelWaveform = await resampleTo16Khz({ file });\n  const transcription = await transcribe({\n    channelWaveform,\n    model: \"small.en\",\n  });\n\n  const { captions } = toCaptions({ whisperWebGpuOutput: transcription });\n  return captions;\n};\n```\n\nTranscribe each original source video or audio file individually.  \nKeep the resulting caption timestamps relative to the beginning of that source file, including portions currently trimmed out of the edit.  \nDo not add composition offsets or flatten multiple transcripts into composition-wide timestamps.\n\nSee [Displaying captions](display-captions.md) for how to display the captions in Remotion.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-captions/transcribe-captions.md"},{"path":"remotion-create/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-create'\n  short_description: 'Create a new Remotion video project'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-create: Create a Remotion video and make a promo for my product'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-create/agents/openai.yaml"},{"path":"remotion-create/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-create/assets/remotion-icon.svg"},{"path":"remotion-create/REFERENCE.md","content":"---\nname: remotion-create\ndescription: Create a new Remotion video\nversion: 4.0.540\n---\n\nThese are instructions for making a new Remotion project and composition.  \nIf this is not the next task, see [Remotion Best Practices](../SKILL.md)\n\n## Scaffold a project\n\nIf a project already exists, skip this.\nEnsure Node.js and Git is installed, and the current folder is appropriate for starting a new project.\n\nInspect the current folder, including hidden files, before choosing where to scaffold.\n\n### Empty folder\n\nIf it is empty, or contains only disposable operating-system metadata such as `.DS_Store`, create the project directly in the current folder.\nRemove only those disposable metadata files first, since `create-video` rejects non-empty folders.\nDo not treat all hidden files as disposable: files such as `.env` and directories such as `.git` are meaningful contents.\n\nScaffold in existing folder:\n\n```bash\nnpx create-video@latest --yes --blank --no-tailwind .\nnpm i\n```\n\n### Non-empty folder\n\nIf the current folder contains meaningful contents and no project already exists, scaffold into a new subfolder.\nReplace `my-video` with a suitable project name.\n\n```bash\nnpx create-video@latest --yes --blank --no-tailwind my-video\ncd my-video\nnpm i\n```\n\n## Open the preview before building the video\n\nAs soon as the project can run, open [Remotion Studio](../remotion-studio/REFERENCE.md) in the browser before writing or changing the composition. For a new project, do this immediately after scaffolding and installing dependencies. For an existing project, do it before editing the video. Keep Studio running while you work so the user can see changes as they appear and steer the result.\n\n## Designing a video\n\nKeep the scaffold and add React Markup.\nFollow [Remotion React Markup Best Practices](../remotion-markup/REFERENCE.md) and [Video Layout Rules](video-layout.md) for video-first layout and text sizing guidance.\n\nBefore writing the root that registers `<Composition>` or `<Still>` elements,\nfollow [Compositions and stills](../remotion-markup/compositions.md).\n\n## Is this a timeline of clips?\n\nIf the video arranges multiple video or audio clips on a timeline, follow\n[Video editing](../remotion-markup/video-editing.md) before writing the\ntimeline. Give every clip that should be edited independently its own authored\nJSX node.\n\n## Is this a multi-scene video?\n\nIf this is a video with multiple subsequent scenes, follow guidance at [Multi-scene videos](../remotion-markup/multi-scene-video.md).\n\n## Interactivity Best Practices\n\nBy structuring the React Markup following [Remotion Interactivity Best Practices](../remotion-interactivity/REFERENCE.md), you allow the user to make edits in the Studio which write back to code.\n\n## TailwindCSS\n\nIf Tailwind is requested, see [tailwind.md](tailwind.md) for using TailwindCSS in Remotion.\n\n## Follow-up\n\nThe video creation process has finished.\nFor follow-up prompts, use [Remotion Best Practices](../SKILL.md)\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-create/REFERENCE.md"},{"path":"remotion-create/tailwind.md","content":"---\nname: tailwind\ndescription: Using TailwindCSS in Remotion.\nmetadata:\n---\n\nYou can and should use TailwindCSS in Remotion, if TailwindCSS is installed in the project.\n\nDon't use `transition-*` or `animate-*` classes - always animate using the `useCurrentFrame()` hook.\n\nTailwind must be installed and enabled first in a Remotion project - see https://www.remotion.dev/docs/tailwind.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-create/tailwind.md"},{"path":"remotion-create/video-layout.md","content":"You are designing a video, not a webpage.\n\n- Decide what the viewer should notice first in each scene. Build the frame around that one thing.\n- Keep important content inside a generous safe area. For 1080px-wide videos, keep key text at least 80px from the sides and 100px from the top and bottom.\n- Do not add redundant elements.\n- For 1080px-wide compositions, use these rough minimums:\n  - Main headline: 84px\n  - Important supporting text: 44px\n- Scale those values with the composition width.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-create/video-layout.md"},{"path":"remotion-docs/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-docs'\n  short_description: 'Search current Remotion documentation'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-docs: What server-side rendering options does Remotion have?'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-docs/agents/openai.yaml"},{"path":"remotion-docs/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.svg"},{"path":"remotion-docs/REFERENCE.md","content":"---\nname: remotion-docs\ndescription: Search Remotion documentation\nversion: 4.0.540\n---\n\nThis skill teaches you how to discover and read current Remotion documentation.\nIf this is not relevant, load [Remotion Best Practices](../SKILL.md) instead.\n\n## Searching the docs\n\nUse the Algolia search API to find relevant documentation pages:\n\n```\nPOST https://plsduol1ca-dsn.algolia.net/1/indexes/*/queries?x-algolia-api-key=3e42dbd4f895fe93ff5cf40d860c4a85&x-algolia-application-id=PLSDUOL1CA\nContent-Type: application/x-www-form-urlencoded\n\n{\n  \"requests\": [\n    {\n      \"query\": \"<your search query>\",\n      \"indexName\": \"remotion\",\n      \"params\": \"attributesToRetrieve=[\\\"hierarchy.lvl0\\\",\\\"hierarchy.lvl1\\\",\\\"hierarchy.lvl2\\\",\\\"url\\\"]&hitsPerPage=10\"\n    }\n  ]\n}\n```\n\nEach hit contains a `url` field pointing to the documentation page.\n\n## Fetching a page as Markdown\n\nAppend `.md` to any Remotion docs URL to retrieve its Markdown source (saves tokens):\n\n```\nhttps://www.remotion.dev/docs/use-video-config.md\nhttps://www.remotion.dev/docs/sequence.md\nhttps://www.remotion.dev/docs/lambda/rendermediaonlambda.md\n```\n\n## Workflow\n\n1. Search Algolia for the concept or API you need.\n2. Pick the most relevant URL(s) from the results.\n3. Fetch each URL with the `.md` suffix.\n4. Implement using the current documentation rather than memorized API knowledge.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-docs/REFERENCE.md"},{"path":"remotion-interactivity/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-interactivity'\n  short_description: 'Make compositions editable in Remotion Studio'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-interactivity: Make the markup in MyComp.tsx interactive'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml"},{"path":"remotion-interactivity/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.svg"},{"path":"remotion-interactivity/inline-effects.md","content":"## Effects should be inline too\n\nThe effects array should not be computed.\nThe same rules for setting keyframes as `interpolate()` apply too here: All values should also be hardcoded: Input range, output range, easing, extrapolation, `output` property.\n\n```tsx title=\"Effects\"\n// 👍 Parameters are inline and the array shape is stable\n<CanvasImage\n  src={src}\n  width={1280}\n  height={720}\n  effects={[\n    radialProgressiveBlur({\n      center: [0.5, 0.5],\n      width: 1.2,\n      height: 0.8,\n      start: 0.2,\n      disabled: true,\n      rotation: interpolate(frame, [0, 120], [0, 180]),\n    }),\n  ]}\n/>\n\nconst center = [0.5, 0.5] as const;\nconst rotation = frame * 1.5;\n\n<CanvasImage\n  src={src}\n  width={1280}\n  height={720}\n  // ❌ Conditional effect is not animateable\n  effects={enabled ? [\n    radialProgressiveBlur({\n      // ❌ Not inline\n      center,\n      rotation,\n    }),\n  ] : []}\n/>\n```\n\nRender separate elements if one version should have effects and another should not.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-interactivity/inline-effects.md"},{"path":"remotion-interactivity/REFERENCE.md","content":"---\nname: remotion-interactivity\ndescription: Structure Remotion markup for interactivity\nversion: 4.0.540\n---\n\nStudio edits the JSX nodes that create timeline items. Structure the code around\nwhat the user should be able to select, move, trim, or style independently.\nKeep editable values inline on each instance.\n\nBefore writing a scene or refactoring its layers, read\n[editable timeline structure](timeline-structure.md). It covers editing units,\ntracks, shared timing, plain layout containers, and a complete component-to-root\nexample. For a timeline built from footage, also read\n[editable video timelines](../remotion-markup/video-editing.md).\n\nUse [connected compositions](../remotion-markup/connected-compositions.md) when\na scene or reusable group needs its own timeline. Validate both its standalone\nview and the full parent timeline; a connection alone does not guarantee fewer\nvisible rows.\n\n## Choose schema fields\n\nEach key in the schema is a prop that Studio can read and edit at the call site.\nProps that are not in the schema still work, but are not editable in Studio.\nKeys may use dot notation, such as `style.color`.\n\n| Type                                                                         | Use for                                                      | Keyframable   |\n| ---------------------------------------------------------------------------- | ------------------------------------------------------------ | ------------- |\n| `string`                                                                     | Strings, such as a title, prompt, or code snippet            | No            |\n| `number`                                                                     | Numbers, with optional `min`, `max`, `step`, `integer`       | Yes           |\n| `boolean`                                                                    | On/off switches                                              | Yes (hold)    |\n| `color`                                                                      | CSS color strings                                            | Yes           |\n| `enum`                                                                       | A choice between `variants`, each with its own nested schema | Opt-in (hold) |\n| `array`                                                                      | Lists of numbers, colors, enums and more                     | No            |\n| `asset`                                                                      | Media sources, with optional `assetType`                     | No            |\n| `font-family`                                                                | CSS font family                                              | No            |\n| `font-weight`                                                                | Font weight                                                  | Yes           |\n| `translate`, `scale`, `rotation-css`, `rotation-degrees`, `transform-origin` | Transforms                                                   | Yes           |\n| `uv-coordinate`                                                              | A normalized `[x, y]` point on the element                   | Yes           |\n| `svg-path`                                                                   | SVG path data                                                | Yes           |\n| `remotion-captions`                                                          | `Caption[]` data                                             | No            |\n| `hidden`                                                                     | A value kept out of the controls                             | —             |\n\nEvery field needs a `default` and should have a `description`, which Studio shows as the label.\nSet `keyframable: false` to show a static control.\n\nExpose content and per-instance appearance, such as the text and an accent color.\nDo not add fields for `style.translate`, `style.scale`, `style.rotate`, `style.transformOrigin` and `style.opacity`: `Interactive.create()` adds them automatically.\n\nTo make CSS properties of the root editable per instance, spread the built-in schema fragments:\n\n```tsx\nconst cardSchema = {\n  ...Interactive.textSchema, // style.color, style.fontSize, style.fontWeight, ...\n  ...Interactive.backgroundSchema, // style.backgroundColor\n  ...Interactive.borderRadiusSchema, // style.borderRadius, ...\n} as const satisfies InteractivitySchema;\n```\n\nAlso available: `Interactive.borderSchema`, and `Interactive.captionsSchema` for components that accept captions.\nFor components that accept `React.ReactNode` children, add `...Interactive.childrenSchema`.\nIt provides controls for children content and may evolve to support richer content.\nCurrently, it uses a string field labeled \"Text\" with a default of `''`.\nIf a component requires string-only children, declare an explicit `children` field with `type: 'string'` instead.\n`Interactive.textSchema` controls typography styles; `childrenSchema` controls content.\nThe children fragment is not included in `baseSchema` or automatically added to custom components.\nNested markup and computed children are currently read-only.\n`text-content` is a deprecated alias for the `string` field type.\nSee [`InteractivitySchema`](https://www.remotion.dev/docs/interactivity-schema) for all options.\n\n## Make an HTML element interactive using `Interactive`\n\nEvery HTML and SVG element (except `<Img>`, it already is interactive) such as `<div>` can be turned interactive using `Interactive`:\n\n```tsx title=\"Interactive elements\"\n<Interactive.Div\n  name=\"Greeting card\"\n  style={{fontSize: 80, padding: 24}}\n>\n  Hello\n</Interactive.Div>\n```\n\nUse this for text or graphics that need independent controls. Keep layout-only\ncontainers and decorative internals as plain HTML; an interactive component\nalready provides controls for its root.\n\n## Prefer inline text\n\nIf text is fixed and only used once, write it directly inside the interactive element instead of extracting it into a constant.\n\n```tsx title=\"Inline text\"\n// 👍 Fixed copy stays editable\n<Interactive.Div name=\"Title\">\n  Remotion Best Practices\n</Interactive.Div>\n```\n\nUse a prop or variable only when the text is dynamic or reused.\n\n## Give interactive elements a descriptive name\n\nAdd a `name` prop to elements to make them easily identifyable.\nAvoid computed names, hardcode them.\n\n```tsx title=\"Interactive names\"\n<>\n  <Interactive.Div name=\"Hero title\" style={{fontSize: 80}}>\n    Launch day\n  </Interactive.Div>\n  <Img name=\"Avatar\" src=\"https://remotion.media/image.jpeg\" />\n  <Video name=\"Background\" src=\"https://remotion.media/video.mp4\" />\n  <Interactive.Div name=\"Title\">\n    Launch day\n  </Interactive.Div>\n</>\n```\n\n## Keep all CSS styles inline\n\nThe best way is to just pass a plain object to `style` - no referring to constants, no object spreading, no math.\n\n```tsx title=\"Interactive example\"\n<Interactive.Div\n  style={{\n    fontSize: 80,\n    color: 'red',\n  }}\n>\n  Hello World!\n</Interactive.Div>\n```\n\n```tsx title=\"❌ Bad for interactivity\"\nconst baseStyle = useMemo(() => {\n  return {\n    fontSize: 12 // ❌ Non-inline styles are not supported\n  }\n}, []);\n\n<Interactive.Div\n  style={{\n    ...baseStyle, // ❌ Spreading is not supported\n    color: RED, // ❌ Referring to constants is not supported\n    scale: frame * 10 // ❌ Math is not supported\n  }}\n>\n  Hello World!\n</Interactive.Div>\n```\n\n## Animate using `interpolate()`\n\nWrite animations as inline `interpolate()` calls on the property that changes.  \nThe output range, easing, extrapolation and `output` property should use hardcoded values.\n\nThe input range may additionally use `durationInFrames`, `fps`, `width` and `height` destructured directly from `useVideoConfig()`. Bare identifiers such as `durationInFrames`, multiplication with a number such as `2 * fps` or `fps * 2`, and subtraction of a number such as `durationInFrames - 1` are supported.\n\n```tsx title=\"Inline values\"\nconst {fps, durationInFrames} = useVideoConfig();\n\n// 👍 Inline values can be standardized and keyframed\n<Interactive.Div\n  name=\"Product card\"\n  style={{\n    color: 'white',\n    fontSize: 80,\n    scale: interpolate(frame, [0, fps], [0, 1], {\n      easing: Easing.spring({damping: 200}),\n      output: 'perceptual-scale',\n      extrapolateLeft: 'clamp',\n      extrapolateRight: 'clamp'\n    }),\n    rotate: interpolate(frame, [0, 1 * fps], ['0deg', '20deg'], {\n      easing: Easing.spring({damping: 200}),\n      extrapolateLeft: 'clamp',\n      extrapolateRight: 'clamp'\n    }),\n    translate: interpolate(\n      frame,\n      [durationInFrames - 30, durationInFrames],\n      ['0px 0px', '0px 120px'],\n      {\n        easing: Easing.spring({damping: 200}),\n        output: 'perceptual-scale',\n        extrapolateLeft: 'clamp',\n        extrapolateRight: 'clamp'\n      }\n    ),\n  }}\n/>\n```\n\n```tsx title=\"❌ Bad interactivity\"\nconst translateY = interpolate(frame, [0, 30], [0, 120]); // ❌ Math should be directly in the markup\n\n<Interactive.Div\n  name=\"Product card\"\n  style={{\n    translate: translateY, // ❌ Only inline interpolate() calls are supported,\n    rotate: interpolate(frame, [start, start + 10], [0, Math.PI]), // ❌ Cannot use math with arbitrary variables, cannot use constants\n    scale: interpolate(anyVariable, [0, 30], [0, 1]) // ❌ Can only interpret the `frame` variable.\n  }}\n/>\n```\n\n## Keep SVG paths editable with `Interactive.Path`\n\nUse `<Interactive.Path>` from `remotion` instead of `<path>` inside an SVG to make the path visually editable.\n\nInstall `@remotion/paths` for path interpolation and Studio path keyframes:\n\n```sh\nbunx remotion add @remotion/paths\n```\n\nIf the geometry is meant to be static, put the path string directly in the `d` prop. Do not extract it into a constant.\n\n```tsx title=\"Editable static path\"\nimport {Interactive} from 'remotion';\n\n<Interactive.Svg width={300} height={300} viewBox=\"0 0 300 300\">\n  <Interactive.Path\n    name=\"Triangle\"\n    d=\"M 40 40 L 260 40 L 150 260 Z\"\n    fill=\"#0b84f3\"\n  />\n</Interactive.Svg>\n```\n\n### Morph paths using inline `interpolatePaths()`\n\nUse `interpolatePaths()` from `@remotion/paths` directly in `d`.  \nIt accepts a frame, an input range, an equally sized array of path strings, and options for easing, extrapolation, and posterization.\nKeep the output paths, ranges, and options inline, following the same input-range rules as `interpolate()` above.  \nDo not use `interpolatePath()` API or extract the interpolated result into a variable when the path keyframes should remain editable in Studio.\n\n```tsx title=\"Editable path keyframes\"\nimport {interpolatePaths} from '@remotion/paths';\nimport {Easing, Interactive, useCurrentFrame} from 'remotion';\n\nexport const MorphingPath = () => {\n  const frame = useCurrentFrame();\n\n  return (\n    <Interactive.Svg width={300} height={300} viewBox=\"0 0 300 300\">\n      <Interactive.Path\n        name=\"Morphing triangle\"\n        d={interpolatePaths(\n          frame,\n          [0, 30, 60],\n          [\n            'M 40 40 L 260 40 L 150 260 Z',\n            'M 40 150 L 150 40 L 260 150 Z',\n            'M 40 260 L 150 40 L 260 260 Z',\n          ],\n          {\n            easing: Easing.bezier(0.42, 0, 0.58, 1),\n            extrapolateLeft: 'clamp',\n            extrapolateRight: 'clamp',\n          },\n        )}\n        fill=\"#0b84f3\"\n      />\n    </Interactive.Svg>\n  );\n};\n```\n\nStudio can edit the path at the current frame, add or move keyframes, and adjust their easing.  \nUse `strokeDasharray` and `strokeDashoffset` to evolve paths.\n\n## Use `scale`, `translate`, `rotate` CSS properties\n\nAvoid the `transform` CSS property.  \nIf possible, use `scale`, `rotate` and `translate` instead because only they are interactively editable.\n\n## Keep composition metadata inline\n\nWhen scaffolding a composition, use a JSX string literal for `id`, keep `width`, `height`, `fps`, `durationInFrames` and `defaultProps` inline and make no type assertions.\n\nThe Props editor can save visual edits back to your code when `defaultProps` is an inline object literal on `<Composition>` or `<Still>`.\n\n```tsx\n// 👍 Static values are in <Composition>, dynamic values are in calculateMetadata()\nconst calculateMetadata = useMemo(async () => {\n  const dimensions = await getDimensions(); // just an example\n  return {width: dimensions.width, height: dimensions.height};\n});\n\n<Composition\n  id=\"my-video\"\n  component={MyComponent}\n  durationInFrames={150}\n  fps={30}\n  calculateMetadata={calculateMetadata}\n  defaultProps={{title: 'Hello', color: '#0b84ff'}}\n/>\n```\n\n```tsx title=\"Negative examples\"\nconst defaultProps = {title: 'Hello', color: '#0b84ff'}; // ❌ Don't extract defaultProps, must be inline\nconst calculateMetadata = useMemo(() => {\n  // ❌ Unnecessary because no calculation is being done,\n  return {durationInFrames: 150, fps: 30, width: 1920, height: 1080};\n});\n\n<Composition\n  id=\"my-video\"\n  component={MyComponent}\n  calculateMetadata={calculateMetadata}\n  defaultProps={{\n    title: 'Hello',\n  } as Props} // ❌ Don't have type assertions, instead type MyComponent correctly\n/>\n```\n\nUse only `calculateMetadata()` for the part of the metadata that is dynamic.\n\n## Effects should be inline too\n\nKeep effect arrays and parameters inline so their shape and keyframes remain editable. See [Inline effects](./inline-effects.md) for examples.\n\n## Making your own component interactive\n\nTo make a custom userland component interactive, use:\n[Make a component interactive](https://www.remotion.dev/docs/studio/make-component-interactive.md)\n\n## Video editing\n\nIf a Remotion component mainly consists of video and audio clips, see [Video editing](../remotion-markup/video-editing.md) for best practices on how to structure Remotion markup so the clips are interactively editable in the timeline.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md"},{"path":"remotion-interactivity/timeline-structure.md","content":"# Editable timeline structure\n\nChoose what the user should be able to move, trim, style, duplicate, or delete\ntogether before adding timeline items. A scene, a captioned shot, a summary\ncard, or a sticker with its entrance sound can each be one editable unit.\nUse plain HTML for the layout and decoration inside that unit. Add an\n`Interactive` element when it needs independent selection or controls.\n\nWrite each independently editable instance as its own JSX node, with a literal\nname and inline timing and appearance props. Reuse the component implementation\nfor repeated cards or stickers, but keep their instances separate. Use loops for\noutput intentionally controlled as one template, such as particles or chart\nbars, rather than independently editable clips.\n\n## Choose how items share time\n\n| Editing behavior                                                 | Structure                                                           |\n| ---------------------------------------------------------------- | ------------------------------------------------------------------- |\n| Items have independent start times and do not overlap            | A named `Track`, with timing on each item                           |\n| Consecutive clips should stay adjacent when one changes duration | `TransitionSeries`, with timing on each `TransitionSeries.Sequence` |\n| Several layers must move, trim, or change speed together         | One timed component or `Sequence` containing those layers           |\n\nA track is useful for scenes, music segments, cutaways, stickers, or sound\neffects. Group non-overlapping siblings by role instead of giving every item\nits own row. Items that remain visible together need separate tracks or a\ncomponent that contains their shared layout. Staggered entrances do not make\noverlapping cards suitable for one track.\n\nPut timing directly on components that accept it. Avoid a `Sequence` around a\nsingle timing-capable child just to name or register it. Keep wrappers that\nprovide shared timing, dimensions, or `TransitionSeries` behavior. Use\n`layout=\"none\"` on a `Sequence` when it should not introduce a layout element.\n\nFor captioned footage and overlays spanning cuts, read\n[editable video timelines](../remotion-markup/video-editing.md).\n\n## Give substantial groups their own timelines\n\nCreate a connected composition when a scene or reusable element benefits from\nbeing edited on its own. Export it with `Interactive.create()` and register the\nsame reference with `Composition`.\n\n- Use `layout: 'absolute-fill'` for a scene. Return a fragment and put its\n  background and alignment styles on the instance; the managed root applies them.\n- Use `layout: 'none'` for a bounded element. Forward `style` to its plain root.\n  The component already owns a timeline item, so the root does not need another\n  `Interactive.Div` for the same controls.\n\nConnection enables drill-down and shared implementation. It does not guarantee\nfewer rows in the parent: Studio can display connected children inside a series.\nChoose useful editing boundaries, then inspect the actual parent timeline.\nDo not add wrapper components or hide editable content just to alter row counts.\n\n## Complete example\n\nThe title is one editable element. Its scene has a connected timeline, while\nindependently timed scenes and music segments each share a named track.\n\n```tsx title=\"Title.tsx\"\nimport type React from 'react';\nimport {Interactive} from 'remotion';\n\nconst TitleInner = ({\n  children,\n  style,\n}: {\n  readonly children: React.ReactNode;\n  readonly style: React.CSSProperties;\n}) => <h1 style={{margin: 0, ...style}}>{children}</h1>;\n\nexport const Title = Interactive.create({\n  Component: TitleInner,\n  layout: 'none',\n  schema: {\n    ...Interactive.textSchema,\n    ...Interactive.childrenSchema,\n  },\n});\n```\n\n```tsx title=\"Chapter.tsx\"\nimport {Interactive} from 'remotion';\nimport {Title} from './Title';\n\nconst ChapterInner = ({title}: {readonly title: string}) => (\n  <>\n    <Title\n      name=\"Chapter title\"\n      style={{fontFamily: 'Arial, sans-serif', fontSize: 96, color: 'white'}}\n    >\n      {title}\n    </Title>\n  </>\n);\n\nexport const Chapter = Interactive.create({\n  Component: ChapterInner,\n  layout: 'absolute-fill',\n  schema: {\n    ...Interactive.backgroundSchema,\n    title: {type: 'string', default: '', description: 'Title'},\n  },\n});\n```\n\n```tsx title=\"MyVideo.tsx\"\nimport {Audio} from '@remotion/media';\nimport {staticFile, Track, useVideoConfig} from 'remotion';\nimport {Chapter} from './Chapter';\n\nexport const MyVideo = () => {\n  const {fps} = useVideoConfig();\n  return (\n    <>\n      <Track name=\"Chapters\">\n        <Chapter\n          name=\"Opening\"\n          durationInFrames={3 * fps}\n          title=\"Introduction\"\n          style={{\n            backgroundColor: '#111111',\n            justifyContent: 'center',\n            alignItems: 'center',\n          }}\n        />\n        <Chapter\n          name=\"Feature\"\n          from={3 * fps}\n          durationInFrames={4 * fps}\n          title=\"New features\"\n          style={{\n            backgroundColor: '#243b53',\n            justifyContent: 'center',\n            alignItems: 'center',\n          }}\n        />\n      </Track>\n      <Track name=\"Music\">\n        <Audio\n          name=\"Opening music\"\n          src={staticFile('music.mp3')}\n          durationInFrames={2 * fps}\n        />\n        <Audio\n          name=\"Closing music\"\n          src={staticFile('music.mp3')}\n          from={4 * fps}\n          trimBefore={10 * fps}\n          durationInFrames={3 * fps}\n        />\n      </Track>\n    </>\n  );\n};\n```\n\n```tsx title=\"Root.tsx\"\nimport {Composition, Folder} from 'remotion';\nimport {Chapter} from './Chapter';\nimport {MyVideo} from './MyVideo';\nimport {Title} from './Title';\n\nexport const RemotionRoot = () => (\n  <>\n    <Composition\n      id=\"MyVideo\"\n      component={MyVideo}\n      width={1920}\n      height={1080}\n      fps={30}\n      durationInFrames={210}\n    />\n    <Folder name=\"Scenes\">\n      <Composition\n        id=\"Chapter\"\n        component={Chapter}\n        width={1920}\n        height={1080}\n        fps={30}\n        durationInFrames={90}\n        defaultProps={{\n          title: 'Introduction',\n          style: {\n            backgroundColor: '#111111',\n            justifyContent: 'center',\n            alignItems: 'center',\n          },\n        }}\n      />\n    </Folder>\n    <Folder name=\"Elements\">\n      <Composition\n        id=\"Title\"\n        component={Title}\n        width={1920}\n        height={1080}\n        fps={30}\n        durationInFrames={90}\n        defaultProps={{\n          children: 'Introduction',\n          style: {\n            fontFamily: 'Arial, sans-serif',\n            fontSize: 96,\n            color: 'white',\n          },\n        }}\n      />\n    </Folder>\n  </>\n);\n```\n\nKeep metadata and defaults inline on each registration. See\n[connected compositions](../remotion-markup/connected-compositions.md) for\nextracting existing groups and checking both the parent and standalone views.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-interactivity/timeline-structure.md"},{"path":"remotion-license/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-license'\n  short_description: 'Find Remotion licensing resources'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-license: Where can I learn about the Remotion license?'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-license/agents/openai.yaml"},{"path":"remotion-license/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-license/assets/remotion-icon.svg"},{"path":"remotion-license/REFERENCE.md","content":"---\nname: remotion-license\ndescription: Find Remotion license information, FAQs, terms, and where to buy a license.\nversion: 4.0.540\n---\n\n# Remotion License\n\nFor questions about Remotion licensing, read the relevant resource:\n\n- [License](https://www.remotion.dev/docs/license.md)\n- [License FAQ](https://www.remotion.dev/docs/license/faq.md)\n- [Terms and Conditions](https://www.remotion.dev/docs/terms.md)\n\nYou can buy a license on [remotion.pro](https://www.remotion.pro/license).\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-license/REFERENCE.md"},{"path":"remotion-maps/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-maps'\n  short_description: 'Create animated maps in Remotion videos'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-maps: Animate a dot from Zurich to New York.'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/agents/openai.yaml"},{"path":"remotion-maps/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.svg"},{"path":"remotion-maps/REFERENCE.md","content":"---\nname: remotion-maps\ndescription: Remotion Map animation knowledge\nversion: 4.0.540\n---\n\n# Remotion Maps\n\nChoose exactly one technique from the intended shot, then load only that technique's `TECHNIQUE.md`.\nEvery technique directory is self-contained and may be removed without breaking the others.\n\n## [Static map](techniques/static-map/TECHNIQUE.md)\n\n- Requires you grab a satellite image and mount it in a `<Img>` tag, and animate on top\n\n## [Mapbox](techniques/mapbox/TECHNIQUE.md)\n\n- Requires a Mapbox key\n- Nicer styles by default\n- Map can display a round globe when zoomed out\n- Includes nice 3D buildings such as the Eiffel tower\n\n## [MapLibre](techniques/maplibre/TECHNIQUE.md)\n\n- Requires no API key, fully free\n- Does not include 3D building\n\n## [MapTiler](techniques/maptiler/TECHNIQUE.md)\n\n- Uses MapTiler\n- Annotations can be drawn on top of geographic features: borders, rivers, labels\n\n## [CesiumJS](techniques/cesium/TECHNIQUE.md)\n\n- Flythroughs through terrain and mountains\n- \"Flight simulator\" perspective\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/REFERENCE.md"},{"path":"remotion-maps/techniques/cesium/assets/cesium-path.json","content":"[\n\t[94.986139893537, 29.76417312959953],\n\t[94.98637054463002, 29.764163024004816],\n\t[94.98661427422437, 29.764153025681516],\n\t[94.9868698103708, 29.764142908388347],\n\t[94.98713600736019, 29.764132461562934],\n\t[94.98741179569139, 29.76412145291623],\n\t[94.9876962466277, 29.764109663422126],\n\t[94.98798853462426, 29.764096898390772],\n\t[94.98828790834106, 29.764082995679242],\n\t[94.98859364523021, 29.764067827511347],\n\t[94.98890509685035, 29.764051279216236],\n\t[94.98922167960325, 29.76403324759024],\n\t[94.98954294512464, 29.76401367774424],\n\t[94.9898685550894, 29.76399255290906],\n\t[94.99019820264337, 29.76396985787546],\n\t[94.9905316178847, 29.763945606334815],\n\t[94.9908685732739, 29.763919866576575],\n\t[94.99120886105722, 29.763892700951896],\n\t[94.99155229116181, 29.7638641665054],\n\t[94.99189872300363, 29.76383429811986],\n\t[94.99224811692223, 29.763803085651237],\n\t[94.99260053337049, 29.763770509641105],\n\t[94.99295601118384, 29.76373658086857],\n\t[94.99331456742908, 29.763701322339223],\n\t[94.99367598745215, 29.763664830647013],\n\t[94.99404000156176, 29.763627219082974],\n\t[94.99440635968021, 29.763588592698778],\n\t[94.99477481502787, 29.76354905236459],\n\t[94.9951451006731, 29.763508748648892],\n\t[94.99578766204738, 29.763462125646818],\n\t[94.99643710580968, 29.763412119743368],\n\t[94.99709296623192, 29.763358988682928],\n\t[94.99775479298779, 29.763302979031952],\n\t[94.99842214521965, 29.763244327404465],\n\t[94.99909470569231, 29.763183258547627],\n\t[94.9997722961385, 29.76312010454948],\n\t[95.00045474013422, 29.763055184243758],\n\t[95.00114189582168, 29.762988795623112],\n\t[95.00183368970049, 29.762921207778405],\n\t[95.0025300799095, 29.76285270023514],\n\t[95.00323103443773, 29.762783549665084],\n\t[95.00393658318124, 29.76271400155497],\n\t[95.00464681949704, 29.76264432424487],\n\t[95.00536183331896, 29.76257477740286],\n\t[95.00608171146906, 29.762505612813378],\n\t[95.00680653793428, 29.762437075077955],\n\t[95.00753639864557, 29.762369398844733],\n\t[95.00827137837749, 29.762302811854063],\n\t[95.00901153006761, 29.762237519590354],\n\t[95.00975680776318, 29.76217368790719],\n\t[95.01050716875933, 29.762111478518566],\n\t[95.0112626067996, 29.76205102042169],\n\t[95.01202312290016, 29.761992432502932],\n\t[95.01278871942189, 29.76193583156792],\n\t[95.01355940108247, 29.761881333165324],\n\t[95.01433525277555, 29.761829093407865],\n\t[95.01511636205572, 29.761779224166457],\n\t[95.01590278872715, 29.76173180995877],\n\t[95.0166868810408, 29.76168612055982],\n\t[95.01746871725406, 29.761642332250204],\n\t[95.0182483756254, 29.76160062131038],\n\t[95.01902596675926, 29.761561177619345],\n\t[95.019801682618, 29.761524238306453],\n\t[95.02057570378254, 29.76149004865798],\n\t[95.02134818878243, 29.761458838563573],\n\t[95.02211921065114, 29.761430763930672],\n\t[95.02288888930805, 29.761405973069504],\n\t[95.02365734467304, 29.761384614290225],\n\t[95.02442469666667, 29.761366835902948],\n\t[95.02519095257038, 29.761352731197437],\n\t[95.02595602043016, 29.761342344990513],\n\t[95.02671980829304, 29.761335722099044],\n\t[95.02748221022355, 29.76133286485609],\n\t[95.02824308111781, 29.761333684556867],\n\t[95.02900227020879, 29.761338090875398],\n\t[95.02975960629327, 29.76134599002589],\n\t[95.03051480114966, 29.76135728786741],\n\t[95.03126749207338, 29.761371921751238],\n\t[95.03201723576402, 29.761389829130785],\n\t[95.03276363398774, 29.761410893146387],\n\t[95.03350632277824, 29.761434973117545],\n\t[95.03424521675927, 29.76146183394706],\n\t[95.03498037607913, 29.761491215377145],\n\t[95.035711917426, 29.761522866578012],\n\t[95.03643998610582, 29.761556530192124],\n\t[95.03716475930274, 29.761591886465347],\n\t[95.03788653744915, 29.761628566185358],\n\t[95.03860571883365, 29.76166618469001],\n\t[95.03932258585421, 29.76170436456548],\n\t[95.04003738892985, 29.76174273062808],\n\t[95.04075025083816, 29.76178094997509],\n\t[95.0414610559133, 29.76181870813213],\n\t[95.04216961904287, 29.761855638407084],\n\t[95.04287591713418, 29.761891331889718],\n\t[95.04357986124926, 29.761925397709096],\n\t[95.04428137757625, 29.761957488479126],\n\t[95.04498041854592, 29.76198725048925],\n\t[95.04567682817188, 29.762014317811357],\n\t[95.04637032968634, 29.762038376323694],\n\t[95.04706059416637, 29.762059099770216],\n\t[95.04774726432963, 29.762076162373777],\n\t[95.0484300050609, 29.762089241174117],\n\t[95.04910871445378, 29.762098042845082],\n\t[95.04978328153793, 29.762102280852183],\n\t[95.05045359964508, 29.76210167552205],\n\t[95.05111966253706, 29.76209602004179],\n\t[95.05178153406797, 29.762085106891018],\n\t[95.05243927503516, 29.762068731547185],\n\t[95.05309287649075, 29.762046750046103],\n\t[95.0537422946664, 29.762019099359485],\n\t[95.05438748396233, 29.761985721609257],\n\t[95.05502839823626, 29.76194655859307],\n\t[95.05566488201883, 29.761901557942874],\n\t[95.05629656919591, 29.761850805510885],\n\t[95.05692313234233, 29.761794428680094],\n\t[95.0575442743842, 29.761732580860688],\n\t[95.0581596433054, 29.761665348138973],\n\t[95.05876888708963, 29.761592816601354],\n\t[95.05937164047754, 29.761515065256333],\n\t[95.05996759228947, 29.761432144038746],\n\t[95.06055643134583, 29.761344102883623],\n\t[95.06113793491645, 29.761251010034922],\n\t[95.06171214230999, 29.761153046649387],\n\t[95.06227907948092, 29.761050389948267],\n\t[95.06283877238438, 29.760943217152814],\n\t[95.06339127381165, 29.760831691663462],\n\t[95.06393669678933, 29.760716002374487],\n\t[95.06447520396281, 29.76059636241658],\n\t[95.06500695797821, 29.760472984920362],\n\t[95.06553212847378, 29.760346104258282],\n\t[95.0660508986937, 29.760216015040477],\n\t[95.06656344194985, 29.760083025494016],\n\t[95.06707002648291, 29.75994741412334],\n\t[95.06757112978441, 29.759809440866206],\n\t[95.06806722979658, 29.759669344181514],\n\t[95.06855878142073, 29.759527354008487],\n\t[95.06904617625263, 29.759383697903765],\n\t[95.06952978875404, 29.75923861533451],\n\t[95.07000993080214, 29.759092371156385],\n\t[95.07048679175114, 29.758945227682446],\n\t[95.07096044787545, 29.75879742836973],\n\t[95.07143096114058, 29.758649219939148],\n\t[95.0718984144853, 29.758500858117706],\n\t[95.07236278188816, 29.7583525823887],\n\t[95.07282412506945, 29.758204644682806],\n\t[95.07328275575983, 29.75805728963777],\n\t[95.07373905641253, 29.757910760813612],\n\t[95.07419366476313, 29.757765217208473],\n\t[95.07464735762416, 29.757620800921966],\n\t[95.07510085345471, 29.757477677507868],\n\t[95.07555467766437, 29.757336168750566],\n\t[95.07600940811365, 29.757196598118206],\n\t[95.07646537399586, 29.75705931280275],\n\t[95.0769228207089, 29.756924677394206],\n\t[95.07738220221682, 29.756793075496777],\n\t[95.07784401968648, 29.75666487927172],\n\t[95.07830874492939, 29.756540496044202],\n\t[95.07877690647402, 29.756420332181715],\n\t[95.07924898851259, 29.75630478841808],\n\t[95.07972503722137, 29.756194196891926],\n\t[95.08020511490892, 29.756088882533362],\n\t[95.0806891403115, 29.75598918720403],\n\t[95.08117690920173, 29.75589531641115],\n\t[95.08166835685006, 29.755807414283098],\n\t[95.08216335868525, 29.75572566824862],\n\t[95.08266177736347, 29.755650250535062],\n\t[95.08316349491537, 29.75558120546187],\n\t[95.08366839703267, 29.755518567048284],\n\t[95.08417639041532, 29.75546236367944],\n\t[95.08468755179344, 29.755412571989652],\n\t[95.08520236790308, 29.755369015997044],\n\t[95.08572134650697, 29.75533148313236],\n\t[95.0862450098908, 29.755299740305322],\n\t[95.08677390781156, 29.75527358808779],\n\t[95.08730861289804, 29.755252808551163],\n\t[95.08784970300886, 29.755237175354623],\n\t[95.08839755885471, 29.755226476280296],\n\t[95.08895256438073, 29.755220494902016],\n\t[95.089514993805, 29.755219019351184],\n\t[95.09008489086116, 29.7552217729881],\n\t[95.09066229928165, 29.75522847917293],\n\t[95.09124726342738, 29.755238870403907],\n\t[95.09183976966378, 29.755252726598844],\n\t[95.09243978867215, 29.75526985018834],\n\t[95.09304723439128, 29.755290065097345],\n\t[95.09366184648091, 29.75531326126932],\n\t[95.09428337414857, 29.755339326723966],\n\t[95.09491171647382, 29.755368102171502],\n\t[95.09554680939114, 29.75539940595205],\n\t[95.09618846028675, 29.755433126230766],\n\t[95.09683632409143, 29.75546923335011],\n\t[95.09749004228215, 29.75550775219342],\n\t[95.09814924669702, 29.755548754655436],\n\t[95.0988136358514, 29.755592374644042],\n\t[95.09948290826172, 29.755638746066982],\n\t[95.1001568080277, 29.75568798494813],\n\t[95.10083517891061, 29.75574017449467],\n\t[95.10151797539464, 29.75579531974171],\n\t[95.1022051519645, 29.755853425724286],\n\t[95.10289664375364, 29.755914488290983],\n\t[95.10359258928374, 29.755978570204803],\n\t[95.10429306658138, 29.756045742645284],\n\t[95.10499798654989, 29.756116067070348],\n\t[95.10570717321444, 29.75618958016383],\n\t[95.10642032295875, 29.75626636089044],\n\t[95.10713711848761, 29.756346492746122],\n\t[95.10785729025027, 29.75643004436662],\n\t[95.10858043622838, 29.75651688160893],\n\t[95.10930611534633, 29.75660684892344],\n\t[95.11003407093642, 29.756699686157475],\n\t[95.11076414467685, 29.756795123665622],\n\t[95.1114960914754, 29.756892893838618],\n\t[95.11222971288655, 29.756992700238396],\n\t[95.1129649452222, 29.75709420093414],\n\t[95.11370170201873, 29.75719709582746],\n\t[95.11443986012442, 29.757301125099488],\n\t[95.11517935555177, 29.7574061249826],\n\t[95.11592009761476, 29.757511940391662],\n\t[95.11666232015585, 29.75761835330566],\n\t[95.11740624233691, 29.757725222810585],\n\t[95.11815181076378, 29.75783253698326],\n\t[95.11889913308254, 29.757940178669305],\n\t[95.11964841222917, 29.758048000558695],\n\t[95.12039993276164, 29.758155854652614],\n\t[95.12115399312397, 29.75826357999786],\n\t[95.1219108497459, 29.75837102690515],\n\t[95.1226706293697, 29.758478081829693],\n\t[95.12343325561484, 29.758584686897258],\n\t[95.12419857627997, 29.758690818430438],\n\t[95.12496638982559, 29.75879646083105],\n\t[95.12573649209446, 29.7589015818837],\n\t[95.12650863318528, 29.75900618637391],\n\t[95.12728253192327, 29.759110282431784],\n\t[95.12805798566751, 29.75921386162033],\n\t[95.12883477913662, 29.759316919371038],\n\t[95.12961273528985, 29.759419445656786],\n\t[95.13039166301432, 29.759521458216526],\n\t[95.13117134363408, 29.759622963323043],\n\t[95.13195155721434, 29.759723948972997],\n\t[95.13273211930314, 29.759824349786275],\n\t[95.13351286507051, 29.759924061406032],\n\t[95.13428648274362, 29.76002351015658],\n\t[95.1350533298064, 29.760122544307915],\n\t[95.1358137532818, 29.760221010686855],\n\t[95.13656784419986, 29.760318809952974],\n\t[95.13731567503761, 29.76041584848236],\n\t[95.1380573752464, 29.760511990985425],\n\t[95.13879310931623, 29.76060704815151],\n\t[95.13952306473344, 29.760700794123938],\n\t[95.14024751710419, 29.7607929520901],\n\t[95.14096671686433, 29.760883206230545],\n\t[95.14168092332761, 29.76097123202995],\n\t[95.14239029599311, 29.761056732470486],\n\t[95.14309486625548, 29.761139484506582],\n\t[95.14379454089128, 29.761219462160696],\n\t[95.14448922306659, 29.76129664046317],\n\t[95.14517882147311, 29.76137100941381],\n\t[95.14586312132259, 29.761442532574584],\n\t[95.14654188135431, 29.761511168945386],\n\t[95.14721489938523, 29.761576901934955],\n\t[95.14788204807155, 29.761639772673718],\n\t[95.14854319868547, 29.76169982923195],\n\t[95.14919822095698, 29.761757127412878],\n\t[95.14984699116548, 29.76181173598209],\n\t[95.15048960377052, 29.761863851723042],\n\t[95.15112617637942, 29.761913696049017],\n\t[95.15175681293137, 29.761961561816054],\n\t[95.15238148064795, 29.762007691856205],\n\t[95.15300009096235, 29.762052309028526],\n\t[95.1533539374323, 29.762086082676035],\n\t[95.15370650809008, 29.762118928860186],\n\t[95.15405759583123, 29.762150875711065],\n\t[95.15440704121897, 29.76218191319173],\n\t[95.1547548321985, 29.762211967913583],\n\t[95.15510097264206, 29.762240955288657],\n\t[95.15544525415498, 29.762268829619945],\n\t[95.15578751039571, 29.76229553455492],\n\t[95.15612769998111, 29.762320941845203],\n\t[95.15646565712565, 29.762344985615734],\n\t[95.156801142589, 29.76236761294652],\n\t[95.1571338046714, 29.76238883654028],\n\t[95.15746323934037, 29.76240869370805],\n\t[95.15778903282519, 29.762427217766984],\n\t[95.15811077257146, 29.762444433666733],\n\t[95.15842800577592, 29.762460368791256],\n\t[95.15874028837707, 29.76247502889767],\n\t[95.15904716834646, 29.76248842410003],\n\t[95.1593481499996, 29.762500590502704],\n\t[95.15964271930007, 29.76251153961251],\n\t[95.1599303416933, 29.76252129267978],\n\t[95.16021045104225, 29.762529892932115],\n\t[95.16048243037355, 29.762537389252305],\n\t[95.16074559672008, 29.762543832974302],\n\t[95.1609993202866, 29.762549265122786],\n\t[95.16124294069552, 29.762553753099137],\n\t[95.16147571071544, 29.762557390653928],\n\t[95.16169677155058, 29.762560323342807]\n]\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json"},{"path":"remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","content":"import React, {useEffect, useMemo, useRef, useState} from 'react';\nimport {\n\tAbsoluteFill,\n\tcancelRender,\n\tcontinueRender,\n\tdelayRender,\n\tuseCurrentFrame,\n\tuseVideoConfig,\n} from 'remotion';\nimport terrainPath from './cesium-path.json';\nimport {smoothFlightPath, type LngLat} from './flight-path';\n\nexport type FlyoverMode = 'landscape' | 'city';\nexport type {LngLat} from './flight-path';\n\nexport type CesiumFlythroughProps = {\n\tmode?: FlyoverMode;\n\tpath?: LngLat[];\n\tpathSmoothingPasses?: number;\n\taltitudeStart?: number;\n\taltitudeEnd?: number;\n\tlookAheadKm?: number;\n\ttravelKm?: number;\n\tpitchFromNadir?: number;\n\tverticalExaggeration?: number;\n\tmaximumScreenSpaceError?: number;\n};\n\nconst MAPTILER_KEY = process.env.REMOTION_MAPTILER_KEY;\nconst GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;\nconst CESIUM_VER = '1.143';\nconst CDN = `https://cesium.com/downloads/cesiumjs/releases/${CESIUM_VER}/Build/Cesium/`;\nconst R = 6371;\nconst MAX_BANK = 0.13;\nconst BANK_GAIN = 0.6;\n\nconst havKm = (a: number[], b: number[]) => {\n\tconst r = Math.PI / 180;\n\tconst dLat = (b[1] - a[1]) * r;\n\tconst dLng = (b[0] - a[0]) * r;\n\tconst h =\n\t\tMath.sin(dLat / 2) ** 2 +\n\t\tMath.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;\n\treturn 2 * R * Math.asin(Math.sqrt(h));\n};\n\nconst makePathWalker = (path: LngLat[]) => {\n\tif (path.length < 2)\n\t\tthrow new Error('Flyover path needs at least two points');\n\tconst cumulative = [0];\n\tfor (let i = 1; i < path.length; i++) {\n\t\tcumulative.push(cumulative[i - 1] + havKm(path[i - 1], path[i]));\n\t}\n\tconst lengthKm = cumulative[cumulative.length - 1];\n\tconst along = (km: number): LngLat => {\n\t\tconst d = Math.max(0, Math.min(lengthKm, km));\n\t\tlet i = 1;\n\t\twhile (i < cumulative.length && cumulative[i] < d) i++;\n\t\tif (i >= cumulative.length) return path[path.length - 1];\n\t\tconst segmentLength = cumulative[i] - cumulative[i - 1] || 1;\n\t\tconst t = (d - cumulative[i - 1]) / segmentLength;\n\t\treturn [\n\t\t\tpath[i - 1][0] + (path[i][0] - path[i - 1][0]) * t,\n\t\t\tpath[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,\n\t\t];\n\t};\n\treturn {along, lengthKm};\n};\n\nconst bearing = (a: number[], b: number[]) => {\n\tconst r = Math.PI / 180;\n\tconst y = Math.sin((b[0] - a[0]) * r) * Math.cos(b[1] * r);\n\tconst x =\n\t\tMath.cos(a[1] * r) * Math.sin(b[1] * r) -\n\t\tMath.sin(a[1] * r) * Math.cos(b[1] * r) * Math.cos((b[0] - a[0]) * r);\n\treturn Math.atan2(y, x);\n};\n\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\nconst clamp = (v: number, lo: number, hi: number) =>\n\tMath.max(lo, Math.min(hi, v));\n\nconst loadCesium = () =>\n\tnew Promise<any>((resolve, reject) => {\n\t\tif ((window as any).Cesium) return resolve((window as any).Cesium);\n\t\t(window as any).CESIUM_BASE_URL = CDN;\n\t\tconst css = document.createElement('link');\n\t\tcss.rel = 'stylesheet';\n\t\tcss.href = `${CDN}Widgets/widgets.css`;\n\t\tdocument.head.appendChild(css);\n\t\tconst script = document.createElement('script');\n\t\tscript.src = `${CDN}Cesium.js`;\n\t\tscript.onload = () => resolve((window as any).Cesium);\n\t\tscript.onerror = () =>\n\t\t\treject(new Error(`Failed to load CesiumJS ${CESIUM_VER}`));\n\t\tdocument.head.appendChild(script);\n\t});\n\nexport const CesiumFlythrough: React.FC<CesiumFlythroughProps> = ({\n\tmode = 'landscape',\n\tpath = terrainPath as LngLat[],\n\tpathSmoothingPasses = 3,\n\taltitudeStart = 4600,\n\taltitudeEnd = 4300,\n\tlookAheadKm = 1.5,\n\ttravelKm = 13,\n\tpitchFromNadir = 76,\n\tverticalExaggeration = 1.1,\n\tmaximumScreenSpaceError = 8,\n}) => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst started = useRef(false);\n\tconst viewerRef = useRef<any>(null);\n\tconst tilesetRef = useRef<any>(null);\n\tconst frame = useCurrentFrame();\n\tconst {durationInFrames, fps, width, height} = useVideoConfig();\n\tconst [ready, setReady] = useState(false);\n\tconst [handle] = useState(() =>\n\t\tdelayRender(`cesium init: ${mode}`, {timeoutInMilliseconds: 120000}),\n\t);\n\tconst walker = useMemo(\n\t\t() => makePathWalker(smoothFlightPath(path, pathSmoothingPasses)),\n\t\t[path, pathSmoothingPasses],\n\t);\n\n\tconst setCamera = (C: any, viewer: any, progress: number) => {\n\t\tconst maxTravel = Math.max(0, walker.lengthKm - lookAheadKm * 2);\n\t\tconst cameraDistance = Math.min(travelKm, maxTravel) * progress;\n\t\tconst camera = walker.along(cameraDistance);\n\t\tconst aim = walker.along(cameraDistance + lookAheadKm);\n\t\tconst aim2 = walker.along(cameraDistance + lookAheadKm * 2);\n\t\tconst heading = bearing(camera, aim);\n\t\tlet headingDelta = bearing(aim, aim2) - heading;\n\t\twhile (headingDelta > Math.PI) headingDelta -= 2 * Math.PI;\n\t\twhile (headingDelta < -Math.PI) headingDelta += 2 * Math.PI;\n\t\tviewer.camera.setView({\n\t\t\tdestination: C.Cartesian3.fromDegrees(\n\t\t\t\tcamera[0],\n\t\t\t\tcamera[1],\n\t\t\t\tlerp(altitudeStart, altitudeEnd, progress),\n\t\t\t),\n\t\t\torientation: {\n\t\t\t\theading,\n\t\t\t\tpitch: C.Math.toRadians(-(90 - pitchFromNadir)),\n\t\t\t\troll: clamp(headingDelta * BANK_GAIN, -MAX_BANK, MAX_BANK),\n\t\t\t},\n\t\t});\n\t};\n\n\tconst tilesAreLoaded = (viewer: any) => {\n\t\tif (mode === 'landscape') return viewer.scene.globe.tilesLoaded;\n\t\treturn Boolean(tilesetRef.current?.tilesLoaded);\n\t};\n\n\tconst settle = (viewer: any) =>\n\t\tnew Promise<void>((resolve) => {\n\t\t\tlet stable = 0;\n\t\t\tlet ticks = 0;\n\t\t\tconst tick = () => {\n\t\t\t\tviewer.render();\n\t\t\t\tticks++;\n\t\t\t\tstable = tilesAreLoaded(viewer) ? stable + 1 : 0;\n\t\t\t\tif (stable > 8 || ticks > 600) {\n\t\t\t\t\tviewer.render();\n\t\t\t\t\tresolve();\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(tick, 8);\n\t\t\t\t}\n\t\t\t};\n\t\t\ttick();\n\t\t});\n\n\tuseEffect(() => {\n\t\tif (started.current) return;\n\t\tstarted.current = true;\n\t\t(async () => {\n\t\t\tif (mode === 'landscape' && !MAPTILER_KEY) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set REMOTION_MAPTILER_KEY. Create a key at https://cloud.maptiler.com/account/keys/',\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (mode === 'city' && !GOOGLE_MAPS_API_KEY) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set REMOTION_GOOGLE_MAPS_API_KEY. Create a Map Tiles API key at https://developers.google.com/maps/documentation/tile/get-api-key',\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (mode === 'city' && durationInFrames / fps > 30) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Google Photorealistic 3D Tiles compositions must not exceed 30 seconds',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst C = await loadCesium();\n\t\t\tconst viewer = new C.Viewer(containerRef.current, {\n\t\t\t\tbaseLayer: false,\n\t\t\t\tbaseLayerPicker: false,\n\t\t\t\tgeocoder: false,\n\t\t\t\thomeButton: false,\n\t\t\t\tsceneModePicker: false,\n\t\t\t\tnavigationHelpButton: false,\n\t\t\t\tanimation: false,\n\t\t\t\ttimeline: false,\n\t\t\t\tfullscreenButton: false,\n\t\t\t\tinfoBox: false,\n\t\t\t\tselectionIndicator: false,\n\t\t\t\tcontextOptions: {webgl: {preserveDrawingBuffer: true}},\n\t\t\t});\n\t\t\tif (mode === 'landscape') {\n\t\t\t\tviewer.imageryLayers.addImageryProvider(\n\t\t\t\t\tnew C.UrlTemplateImageryProvider({\n\t\t\t\t\t\turl: `https://api.maptiler.com/tiles/satellite-v2/{z}/{x}/{y}.jpg?key=${MAPTILER_KEY}`,\n\t\t\t\t\t\tmaximumLevel: 20,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tviewer.terrainProvider = await C.CesiumTerrainProvider.fromUrl(\n\t\t\t\t\t`https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/?key=${MAPTILER_KEY}`,\n\t\t\t\t\t{requestVertexNormals: true},\n\t\t\t\t);\n\t\t\t\tviewer.creditDisplay.addStaticCredit(\n\t\t\t\t\tnew C.Credit(\n\t\t\t\t\t\t'<a href=\"https://www.maptiler.com/copyright/\" target=\"_blank\">&copy; MapTiler</a>',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (mode === 'city') {\n\t\t\t\tviewer.scene.globe.show = false;\n\t\t\t\tconst tileset = await C.Cesium3DTileset.fromUrl(\n\t\t\t\t\t`https://tile.googleapis.com/v1/3dtiles/root.json?key=${GOOGLE_MAPS_API_KEY}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tshowCreditsOnScreen: true,\n\t\t\t\t\t\tmaximumScreenSpaceError,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tviewer.scene.primitives.add(tileset);\n\t\t\t\ttilesetRef.current = tileset;\n\t\t\t}\n\n\t\t\tviewer.useDefaultRenderLoop = false;\n\t\t\tviewer.scene.skyAtmosphere.show = true;\n\t\t\tviewer.scene.fog.enabled = true;\n\t\t\tviewer.scene.globe.enableLighting = false;\n\t\t\tviewer.scene.verticalExaggeration = verticalExaggeration;\n\t\t\t(window as any).__CESIUM_FLYOVER__ = {C, mode};\n\t\t\tviewerRef.current = viewer;\n\t\t\tsetCamera(C, viewer, 0);\n\t\t\tawait settle(viewer);\n\t\t\tsetReady(true);\n\t\t\tcontinueRender(handle);\n\t\t})().catch((error) => cancelRender(error));\n\t}, [durationInFrames, fps, handle, mode]);\n\n\tuseEffect(() => {\n\t\tif (!ready) return;\n\t\tconst frameHandle = delayRender(`cesium ${mode} frame ${frame}`, {\n\t\t\ttimeoutInMilliseconds: 60000,\n\t\t});\n\t\tconst C = (window as any).__CESIUM_FLYOVER__.C;\n\t\tconst viewer = viewerRef.current;\n\t\tconst progress = durationInFrames <= 1 ? 0 : frame / (durationInFrames - 1);\n\t\tsetCamera(C, viewer, progress);\n\t\tsettle(viewer).then(() => continueRender(frameHandle));\n\t}, [ready, frame, durationInFrames, mode]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: '#000'}}>\n\t\t\t<div ref={containerRef} style={{width, height, position: 'absolute'}} />\n\t\t\t{mode === 'city' ? (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 20,\n\t\t\t\t\t\tright: 24,\n\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\tfont: '500 18px/1.2 sans-serif',\n\t\t\t\t\t\ttextShadow: '0 1px 4px black',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tFor promotional purposes only\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</AbsoluteFill>\n\t);\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx"},{"path":"remotion-maps/techniques/cesium/assets/city-path.json","content":"[\n\t[-74.0135, 40.7047],\n\t[-74.0102, 40.7104],\n\t[-74.0074, 40.7167],\n\t[-74.0047, 40.7232],\n\t[-74.0017, 40.7297],\n\t[-73.9988, 40.7362],\n\t[-73.9954, 40.7429],\n\t[-73.9917, 40.7496],\n\t[-73.9882, 40.7563],\n\t[-73.9848, 40.7631]\n]\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json"},{"path":"remotion-maps/techniques/cesium/assets/example-Root.tsx","content":"import React from 'react';\nimport {Composition} from 'remotion';\nimport {CesiumFlythrough, type CesiumFlythroughProps} from './CesiumFlythrough';\nimport cityPath from './city-path.json';\n\nexport const RemotionRoot: React.FC = () => (\n\t<>\n\t\t<Composition\n\t\t\tid=\"LandscapeFlyover\"\n\t\t\tcomponent={CesiumFlythrough}\n\t\t\tdefaultProps={{mode: 'landscape'} satisfies CesiumFlythroughProps}\n\t\t\tdurationInFrames={24 * 30}\n\t\t\tfps={30}\n\t\t\twidth={1920}\n\t\t\theight={1080}\n\t\t/>\n\t\t<Composition\n\t\t\tid=\"CityFlyover\"\n\t\t\tcomponent={CesiumFlythrough}\n\t\t\tdefaultProps={\n\t\t\t\t{\n\t\t\t\t\tmode: 'city',\n\t\t\t\t\tpath: cityPath as [number, number][],\n\t\t\t\t\taltitudeStart: 700,\n\t\t\t\t\taltitudeEnd: 500,\n\t\t\t\t\tlookAheadKm: 0.7,\n\t\t\t\t\ttravelKm: 4.5,\n\t\t\t\t\tpitchFromNadir: 72,\n\t\t\t\t\tverticalExaggeration: 1,\n\t\t\t\t\tmaximumScreenSpaceError: 6,\n\t\t\t\t} satisfies CesiumFlythroughProps\n\t\t\t}\n\t\t\tdurationInFrames={18 * 30}\n\t\t\tfps={30}\n\t\t\twidth={1920}\n\t\t\theight={1080}\n\t\t/>\n\t</>\n);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx"},{"path":"remotion-maps/techniques/cesium/assets/flight-path.ts","content":"export type LngLat = [number, number];\n\n// Chaikin corner cutting turns a sparse route into a continuous curve. Repeated passes round\n// direction changes into deliberate swerves instead of left-right heading bumps.\nexport const smoothFlightPath = (source: LngLat[], passes = 3): LngLat[] => {\n\tif (source.length < 2)\n\t\tthrow new Error('Flyover path needs at least two points');\n\n\t// Keep adjacent longitudes continuous for routes that cross the antimeridian.\n\tconst unwrapped: LngLat[] = [source[0]];\n\tfor (let index = 1; index < source.length; index++) {\n\t\tconst [lng, lat] = source[index];\n\t\tconst previous = unwrapped[index - 1][0];\n\t\tlet adjusted = lng;\n\t\twhile (adjusted - previous > 180) adjusted -= 360;\n\t\twhile (adjusted - previous < -180) adjusted += 360;\n\t\tunwrapped.push([adjusted, lat]);\n\t}\n\n\tlet curve = unwrapped;\n\tfor (let pass = 0; pass < Math.max(0, passes); pass++) {\n\t\tconst next: LngLat[] = [curve[0]];\n\t\tfor (let i = 0; i < curve.length - 1; i++) {\n\t\t\tconst a = curve[i];\n\t\t\tconst b = curve[i + 1];\n\t\t\tnext.push(\n\t\t\t\t[a[0] * 0.75 + b[0] * 0.25, a[1] * 0.75 + b[1] * 0.25],\n\t\t\t\t[a[0] * 0.25 + b[0] * 0.75, a[1] * 0.25 + b[1] * 0.75],\n\t\t\t);\n\t\t}\n\t\tnext.push(curve[curve.length - 1]);\n\t\tcurve = next;\n\t}\n\treturn curve;\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts"},{"path":"remotion-maps/techniques/cesium/assets/sample-river.geojson","content":"{\n\t\"type\": \"FeatureCollection\",\n\t\"features\": [\n\t\t{\n\t\t\t\"type\": \"Feature\",\n\t\t\t\"properties\": {\"name\": \"Yarlung Tsangpo (OSM, gorge way)\"},\n\t\t\t\"geometry\": {\n\t\t\t\t\"type\": \"LineString\",\n\t\t\t\t\"coordinates\": [\n\t\t\t\t\t[94.8794306, 29.5453548],\n\t\t\t\t\t[94.880058, 29.5500259],\n\t\t\t\t\t[94.8804545, 29.5529773],\n\t\t\t\t\t[94.8872806, 29.559007],\n\t\t\t\t\t[94.8902386, 29.5645817],\n\t\t\t\t\t[94.8945618, 29.5651505],\n\t\t\t\t\t[94.8985437, 29.5703839],\n\t\t\t\t\t[94.8978611, 29.5758448],\n\t\t\t\t\t[94.9077237, 29.5843086],\n\t\t\t\t\t[94.9107706, 29.5872382],\n\t\t\t\t\t[94.9136749, 29.5879042],\n\t\t\t\t\t[94.9208424, 29.5864253],\n\t\t\t\t\t[94.9243692, 29.5890419],\n\t\t\t\t\t[94.9243692, 29.5945028],\n\t\t\t\t\t[94.9268508, 29.597544],\n\t\t\t\t\t[94.9331942, 29.6000111],\n\t\t\t\t\t[94.9350913, 29.6024165],\n\t\t\t\t\t[94.9359736, 29.6042869],\n\t\t\t\t\t[94.9354367, 29.6064452],\n\t\t\t\t\t[94.9350634, 29.608155],\n\t\t\t\t\t[94.9343462, 29.6094434],\n\t\t\t\t\t[94.9295695, 29.6113703],\n\t\t\t\t\t[94.9288061, 29.6124782],\n\t\t\t\t\t[94.9268721, 29.6194181],\n\t\t\t\t\t[94.9273809, 29.6276608],\n\t\t\t\t\t[94.9274409, 29.6286334],\n\t\t\t\t\t[94.9263783, 29.6303683],\n\t\t\t\t\t[94.9250518, 29.6304537],\n\t\t\t\t\t[94.922744, 29.6299103],\n\t\t\t\t\t[94.9170292, 29.6256472],\n\t\t\t\t\t[94.9144757, 29.6243553],\n\t\t\t\t\t[94.9115439, 29.6243318],\n\t\t\t\t\t[94.9008302, 29.6273853],\n\t\t\t\t\t[94.8972905, 29.6276085],\n\t\t\t\t\t[94.8897112, 29.6252949],\n\t\t\t\t\t[94.8827398, 29.6253184],\n\t\t\t\t\t[94.8806998, 29.6268686],\n\t\t\t\t\t[94.8777241, 29.6317051],\n\t\t\t\t\t[94.8768493, 29.6342436],\n\t\t\t\t\t[94.8768641, 29.6346894],\n\t\t\t\t\t[94.8769277, 29.6365972],\n\t\t\t\t\t[94.8775677, 29.6391137],\n\t\t\t\t\t[94.8804943, 29.6418187],\n\t\t\t\t\t[94.8821969, 29.6438716],\n\t\t\t\t\t[94.8877263, 29.6456718],\n\t\t\t\t\t[94.8903366, 29.6468971],\n\t\t\t\t\t[94.8959561, 29.6481151],\n\t\t\t\t\t[94.9032857, 29.6528729],\n\t\t\t\t\t[94.9113869, 29.6568592],\n\t\t\t\t\t[94.9162734, 29.6587881],\n\t\t\t\t\t[94.9182022, 29.6625172],\n\t\t\t\t\t[94.9203882, 29.670104],\n\t\t\t\t\t[94.9197453, 29.6744761],\n\t\t\t\t\t[94.9192644, 29.6754058],\n\t\t\t\t\t[94.9178164, 29.6782052],\n\t\t\t\t\t[94.915116, 29.6816771],\n\t\t\t\t\t[94.9094581, 29.6810342],\n\t\t\t\t\t[94.9043145, 29.6796197],\n\t\t\t\t\t[94.9018712, 29.6806484],\n\t\t\t\t\t[94.8976278, 29.6812914],\n\t\t\t\t\t[94.8909411, 29.6856634],\n\t\t\t\t\t[94.8896552, 29.6890068],\n\t\t\t\t\t[94.892227, 29.6990368],\n\t\t\t\t\t[94.8978849, 29.704952],\n\t\t\t\t\t[94.9017426, 29.7100956],\n\t\t\t\t\t[94.9061206, 29.7112788],\n\t\t\t\t\t[94.9065005, 29.7113815],\n\t\t\t\t\t[94.9225743, 29.7192255],\n\t\t\t\t\t[94.9264023, 29.7212652],\n\t\t\t\t\t[94.9267629, 29.7213678],\n\t\t\t\t\t[94.9341474, 29.723469],\n\t\t\t\t\t[94.9360823, 29.7245705],\n\t\t\t\t\t[94.9357152, 29.7273333],\n\t\t\t\t\t[94.9344915, 29.7289804],\n\t\t\t\t\t[94.9323502, 29.7303263],\n\t\t\t\t\t[94.9298621, 29.73339],\n\t\t\t\t\t[94.9294542, 29.734665],\n\t\t\t\t\t[94.9298213, 29.7382244],\n\t\t\t\t\t[94.9306755, 29.739157],\n\t\t\t\t\t[94.9340021, 29.7439794],\n\t\t\t\t\t[94.9355331, 29.7464083],\n\t\t\t\t\t[94.9364901, 29.7488664],\n\t\t\t\t\t[94.9372115, 29.749423],\n\t\t\t\t\t[94.937775, 29.7498579],\n\t\t\t\t\t[94.939019, 29.7500527],\n\t\t\t\t\t[94.9407117, 29.7501944],\n\t\t\t\t\t[94.9429346, 29.7513629],\n\t\t\t\t\t[94.947778, 29.7543307],\n\t\t\t\t\t[94.9541921, 29.755984],\n\t\t\t\t\t[94.9574551, 29.7555414],\n\t\t\t\t\t[94.9603715, 29.7553644],\n\t\t\t\t\t[94.9629516, 29.755488],\n\t\t\t\t\t[94.9676317, 29.757489],\n\t\t\t\t\t[94.9709355, 29.7587814],\n\t\t\t\t\t[94.9737019, 29.7603278],\n\t\t\t\t\t[94.9738572, 29.7603796],\n\t\t\t\t\t[94.9844009, 29.7638941],\n\t\t\t\t\t[94.9852725, 29.7649069],\n\t\t\t\t\t[94.9861359, 29.7675568],\n\t\t\t\t\t[94.9898232, 29.7694497],\n\t\t\t\t\t[94.9917263, 29.7691954],\n\t\t\t\t\t[94.9966421, 29.7688099],\n\t\t\t\t\t[95.0005707, 29.7670075],\n\t\t\t\t\t[95.0007566, 29.7668999],\n\t\t\t\t\t[95.0028203, 29.7657056],\n\t\t\t\t\t[95.0080406, 29.7614995],\n\t\t\t\t\t[95.0092963, 29.7609572],\n\t\t\t\t\t[95.0138378, 29.7589957],\n\t\t\t\t\t[95.0160159, 29.7574362],\n\t\t\t\t\t[95.0194618, 29.7553902],\n\t\t\t\t\t[95.0222306, 29.7524106],\n\t\t\t\t\t[95.024336, 29.7498815],\n\t\t\t\t\t[95.0273932, 29.7487547],\n\t\t\t\t\t[95.0324981, 29.7493557],\n\t\t\t\t\t[95.0339552, 29.7496724],\n\t\t\t\t\t[95.0346257, 29.7499916],\n\t\t\t\t\t[95.035882, 29.7507411],\n\t\t\t\t\t[95.0375964, 29.7530966],\n\t\t\t\t\t[95.0386203, 29.754818],\n\t\t\t\t\t[95.0383895, 29.7567272],\n\t\t\t\t\t[95.038166, 29.7590432],\n\t\t\t\t\t[95.0395792, 29.7618349],\n\t\t\t\t\t[95.0411334, 29.7631575],\n\t\t\t\t\t[95.0420532, 29.7639402],\n\t\t\t\t\t[95.0467825, 29.7661735],\n\t\t\t\t\t[95.0495101, 29.7673453],\n\t\t\t\t\t[95.0510063, 29.7681933],\n\t\t\t\t\t[95.0516577, 29.7683919],\n\t\t\t\t\t[95.0560621, 29.7692331],\n\t\t\t\t\t[95.0577259, 29.7690047],\n\t\t\t\t\t[95.0588453, 29.7684695],\n\t\t\t\t\t[95.0650773, 29.767807],\n\t\t\t\t\t[95.0705737, 29.761782],\n\t\t\t\t\t[95.0720258, 29.7599696],\n\t\t\t\t\t[95.0736121, 29.7540856],\n\t\t\t\t\t[95.0754147, 29.751782],\n\t\t\t\t\t[95.0758224, 29.751042],\n\t\t\t\t\t[95.0760619, 29.750314],\n\t\t\t\t\t[95.0759483, 29.7495284],\n\t\t\t\t\t[95.0751984, 29.7480135],\n\t\t\t\t\t[95.0728911, 29.7466988],\n\t\t\t\t\t[95.0724585, 29.7445327],\n\t\t\t\t\t[95.0732804, 29.7429802],\n\t\t\t\t\t[95.0734102, 29.740789],\n\t\t\t\t\t[95.0731362, 29.7386729],\n\t\t\t\t\t[95.0744382, 29.7374902],\n\t\t\t\t\t[95.075294, 29.7367129],\n\t\t\t\t\t[95.079535, 29.7361346],\n\t\t\t\t\t[95.081745, 29.736994],\n\t\t\t\t\t[95.083005, 29.737484],\n\t\t\t\t\t[95.0833905, 29.7430745],\n\t\t\t\t\t[95.0844421, 29.7452715],\n\t\t\t\t\t[95.0871532, 29.7473749],\n\t\t\t\t\t[95.0918361, 29.7499864],\n\t\t\t\t\t[95.0931923, 29.7511573],\n\t\t\t\t\t[95.0943202, 29.7514189],\n\t\t\t\t\t[95.0965266, 29.7510558],\n\t\t\t\t\t[95.0991656, 29.7494408],\n\t\t\t\t\t[95.1029871, 29.7472998],\n\t\t\t\t\t[95.1038668, 29.7453591],\n\t\t\t\t\t[95.1063039, 29.7417406],\n\t\t\t\t\t[95.1084814, 29.741365],\n\t\t\t\t\t[95.111726, 29.7426671],\n\t\t\t\t\t[95.1138489, 29.7452914],\n\t\t\t\t\t[95.1152135, 29.7465013],\n\t\t\t\t\t[95.1154175, 29.7473556],\n\t\t\t\t\t[95.1158661, 29.7480506],\n\t\t\t\t\t[95.1167533, 29.7482586],\n\t\t\t\t\t[95.1179004, 29.7491572],\n\t\t\t\t\t[95.119434, 29.7515181],\n\t\t\t\t\t[95.1195997, 29.7517319],\n\t\t\t\t\t[95.1214023, 29.7535598],\n\t\t\t\t\t[95.1239692, 29.754987],\n\t\t\t\t\t[95.1260602, 29.7556005],\n\t\t\t\t\t[95.1284973, 29.7561388],\n\t\t\t\t\t[95.1311663, 29.7559002],\n\t\t\t\t\t[95.1323477, 29.7559385],\n\t\t\t\t\t[95.1344757, 29.7564723],\n\t\t\t\t\t[95.1350155, 29.7583672],\n\t\t\t\t\t[95.1382746, 29.7617848],\n\t\t\t\t\t[95.1400377, 29.7646815],\n\t\t\t\t\t[95.1410982, 29.7654339],\n\t\t\t\t\t[95.1437689, 29.7649144],\n\t\t\t\t\t[95.1469991, 29.7640131],\n\t\t\t\t\t[95.1503617, 29.7622343],\n\t\t\t\t\t[95.1506908, 29.7620602],\n\t\t\t\t\t[95.1532721, 29.7600322],\n\t\t\t\t\t[95.1565312, 29.7590432],\n\t\t\t\t\t[95.1584059, 29.7594063],\n\t\t\t\t\t[95.1589059, 29.7599317],\n\t\t\t\t\t[95.1595043, 29.7612399],\n\t\t\t\t\t[95.1611602, 29.7632119],\n\t\t\t\t\t[95.1635565, 29.7646136],\n\t\t\t\t\t[95.1700434, 29.7649144],\n\t\t\t\t\t[95.1730828, 29.7644136],\n\t\t\t\t\t[95.1748094, 29.7636814],\n\t\t\t\t\t[95.1765005, 29.7628339],\n\t\t\t\t\t[95.1794885, 29.7589784],\n\t\t\t\t\t[95.1830673, 29.7576787],\n\t\t\t\t\t[95.1848212, 29.7580682],\n\t\t\t\t\t[95.1869103, 29.7594603]\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t]\n}\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson"},{"path":"remotion-maps/techniques/cesium/references/3d-data-sources.md","content":"# Flyover data sources\n\n## Landscape\n\nUse MapTiler for both layers:\n\n- `terrain-quantized-mesh-v2`: elevation encoded as Cesium quantized-mesh terrain.\n- `satellite-v2`: raster satellite imagery draped on that mesh.\n\nCesiumJS renders the layers; it does not supply the data. Set `REMOTION_MAPTILER_KEY`.\n\nCreate a key:\n\n- https://cloud.maptiler.com/account/keys/\n\nOfficial documentation:\n\n- https://docs.maptiler.com/cesium/\n- https://docs.maptiler.com/schema-raster/terrain-3d/\n\n## City\n\nUse Google Photorealistic 3D Tiles. Google supplies one high-resolution 3D mesh already textured\nwith imagery. Disable the Cesium globe and do not add MapTiler terrain or satellite beneath it. Set\n`REMOTION_GOOGLE_MAPS_API_KEY`.\n\nCreate and configure a key:\n\n- https://developers.google.com/maps/documentation/tile/get-api-key\n\nEnable the Map Tiles API in a billing-enabled Google Cloud project and restrict the key to that API.\nThe application restriction must permit the local headless Remotion request.\n\nOfficial documentation:\n\n- https://developers.google.com/maps/documentation/tile/3d-tiles\n- https://developers.google.com/maps/documentation/tile/policies\n\n## Why not extruded buildings\n\nOSM-, Overture- and vector-tile building products primarily provide footprints, approximate heights\nand optional roof attributes. They are useful for analytical or stylized maps, but they do not\nprovide the textured architecture required for a cinematic city flyover.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md"},{"path":"remotion-maps/techniques/cesium/references/3d-flyover-architecture.md","content":"# 3D Flyover — architecture reference\n\nDeep detail behind `TECHNIQUE.md`: provider loading, the camera-path pipeline, per-frame camera math, and\nthe proven terrain values. Both landscape and city modes have been forward-tested through Remotion.\n\n## 1. Provider initialization\n\nCreate the Viewer with `baseLayer: false`, UI widgets disabled, and\n`contextOptions.webgl.preserveDrawingBuffer: true`. Never hide the credit display.\n\n### Landscape\n\nAdd MapTiler `satellite-v2` with `UrlTemplateImageryProvider`, then load\n`terrain-quantized-mesh-v2` with `CesiumTerrainProvider.fromUrl({requestVertexNormals: true})`.\nMapTiler supplies both datasets; no Cesium ion token is required.\n\n### City\n\nDo not add MapTiler. Hide the globe, then add:\n\n```ts\nviewer.scene.globe.show = false;\nconst tileset = await Cesium.Cesium3DTileset.fromUrl(\n  `https://tile.googleapis.com/v1/3dtiles/root.json?key=${GOOGLE_KEY}`,\n  {showCreditsOnScreen: true, maximumScreenSpaceError: 4},\n);\nviewer.scene.primitives.add(tileset);\n```\n\nLower `maximumScreenSpaceError` improves refinement at substantial download/render cost. Start at\n`4` for a hero landmark and `6–8` for wider urban shots. Enforce the Google 30-second promotional\nvideo ceiling in the component.\n\nLoad Cesium from the CDN after setting `window.CESIUM_BASE_URL`; the tested version is `1.143`.\n\n## 2. The camera path — structure & generation\n\nFour properties matter, in order:\n\n1. **Continuous curvature** — the camera must flow through curves, never \"fly straight, snap to a new\n   heading, fly straight.\" The component applies three passes of **Chaikin corner cutting** to every\n   supplied path. Each pass replaces a segment with quarter and three-quarter points, rounding a\n   corner into a curve. Three passes are the default; four is softer, two is tighter.\n2. **Constant ground speed** — precompute cumulative distance along the rounded curve and interpolate\n   by arc length. Do not animate by source-point index; unequal source spacing creates speed bumps.\n3. **Minimized amplitude** — for detailed landscape centerlines, dampen the prepared path toward its\n   straight start→end chord by a fixed fraction `DAMP` (0 = dead straight, 1 = full river). This is\n   the single swerve-amplitude knob.\n4. **Enough length** — `PATHKM ≥ TRAVEL_KM + 2·LOOK_AHEAD_KM` so the look-ahead aim never clamps.\n\n`../scripts/prep-cesium-path.mjs` does: clip a window of the source centerline → resample to even\narc-length spacing (0.1 km) → moving-average smooth (±2.8 km window, 2 passes) → dampen toward the chord\n(`DAMP=0.45`). Validate with the heading-delta probe it prints — deltas should be small and change\n_gradually_ (water-wars: `3,0,-1,-3,-4,1,7,9,5,-5,-12,-7,…`). Big jumps = corners = bad.\n\nThe component then applies Chaikin smoothing to this prepared route, or directly to a short\nhand-authored city route. Keep city control points sparse and intentional; smoothing cannot rescue a\nzig-zagging route that crosses the subject repeatedly.\n\n**Source data:** OSM via Overpass (~0.3 km vertex spacing) — Natural Earth is too coarse for inner\ngorges. overpass-api.de is often busy → mirror `overpass.kumi.systems`.\n\n## 3. Camera animation per frame (position, heading, pitch, bank)\n\nWalk the path by **arc length** (precompute cumulative distances once). Every frame:\n\n- **Position** = the point at `dCam` km along the path, altitude `lerp(ALT_START, ALT_END, prog)`.\n- **Heading** = bearing from the camera point to a **real point `LOOK_AHEAD_KM` further along the same\n  path**. A far aim averages wiggle → smooth heading; on a curved path it leads into the bend, so the\n  heading turns gently with the path. (A local-tangent aim spins the camera at every kink — don't.)\n- **Pitch** = constant. We keep a MapLibre-style param `PITCH_FROM_NADIR` (90 = horizon), then convert:\n  **Cesium pitch = `-(90 - PITCH_FROM_NADIR)`** (Cesium: 0 = horizon, -90 = straight down). 76° → -14°.\n- **Bank (roll)** = lean _into_ the turn — the helicopter tell. Measure turn rate as the bearing change\n  between `aim` and a point `2·LOOK_AHEAD_KM` ahead; `roll = clamp(dH · BANK_GAIN, ±MAX_BANK)`. Because\n  the path is smooth, `dH` changes gradually → the bank eases in and out, never jerks.\n\n```ts\nconst setCamera = (C, viewer, prog) => {\n  const dCam = Math.min(TRAVEL_KM, PATHKM - LOOK_AHEAD_KM * 2) * prog;\n  const cam  = alongPath(dCam);                    // arc-length point\n  const aim  = alongPath(dCam + LOOK_AHEAD_KM);     // heading target (real point on the path)\n  const aim2 = alongPath(dCam + LOOK_AHEAD_KM * 2); // turn-rate probe → bank\n  const heading = bearing(cam, aim);\n  let dH = bearing(aim, aim2) - heading; while (dH > Math.PI) dH -= 2*Math.PI; while (dH < -Math.PI) dH += 2*Math.PI;\n  viewer.camera.setView({\n    destination: C.Cartesian3.fromDegrees(cam[0], cam[1], lerp(ALT_START, ALT_END, prog)),\n    orientation: { heading, pitch: C.Math.toRadians(-(90 - PITCH_FROM_NADIR)), roll: clamp(dH * BANK_GAIN, -MAX_BANK, MAX_BANK) },\n  });\n};\n```\n\n> **Cesium vs MapLibre conventions (gotcha):** Cesium heading is radians, 0 = north, clockwise. Pitch\n> 0 = horizon, negative = down (MapLibre is the inverse). Roll positive = bank right; tune the sign by eye.\n\n## 4. The feel — proven water-wars values\n\n| Param                    | Value                  | Meaning                                                                              |\n| ------------------------ | ---------------------- | ------------------------------------------------------------------------------------ |\n| `TRAVEL_KM`              | 13                     | How far the camera travels. **Speed = `TRAVEL_KM / durationSeconds`.**               |\n| duration                 | 24 s (720 f @30)       | 13 km / 24 s ≈ **0.54 km/s** — a slow, peaceful glide. 8 s felt \"extremely rushed\".  |\n| `ALT_START → ALT_END`    | 4600 → 4300 m ASL      | Absolute (terrain-independent). Inside the corridor walls → fly _through_, not over. |\n| `LOOK_AHEAD_KM`          | 1.5                    | Heading smoothness vs responsiveness.                                                |\n| `PITCH_FROM_NADIR`       | 76°                    | Stare-ahead down the corridor (90 = level). → Cesium -14°.                           |\n| `MAX_BANK` / `BANK_GAIN` | 0.13 rad (~7.5°) / 0.6 | Helicopter lean into turns.                                                          |\n| `verticalExaggeration`   | 1.1                    | Subtle terrain drama.                                                                |\n| `DAMP` (prep)            | 0.45                   | Swerve amount: higher = weavier, lower = straighter.                                 |\n\n**A slow camera renders fast.** At 0.54 km/s the camera moves ~18 m/frame, so tiles stay cached and each\n`settle()` returns almost immediately; the 720-frame render completed in one pass (no chunk-rendering).\n\n## 5. The complete component\n\nThe full, runnable component is `../assets/CesiumFlythrough.tsx` — read it directly. Its shape:\n\n- `loadCesium()` — inject `CESIUM_BASE_URL` + the CDN `Cesium.js`, resolve when loaded.\n- init effect — build the Viewer (§1), `setCamera(…, 0)`, `await settle(viewer)`, `continueRender`.\n- `settle(viewer)` — loop `viewer.render()` until `globe.tilesLoaded` for landscapes or\n  `tileset.tilesLoaded` for cities is stable for ~8 ticks (cap ~600).\n- per-frame effect — `delayRender({timeoutInMilliseconds: 60000})` → `setCamera(prog)` → `settle()` → `continueRender`.\n\n## 6. Render\n\n```bash\nbunx remotion still   src/index.ts <Comp> out.png --frame=N --gl=angle --timeout=180000   # validate framing/bank first\nbunx remotion render  src/index.ts <Comp> out.mp4  --gl=angle --concurrency=1 --timeout=180000\n```\n\n`--gl=angle` is mandatory. Use `--concurrency=1`; `settle()` already serializes tile loading.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md"},{"path":"remotion-maps/techniques/cesium/references/3d-troubleshooting.md","content":"# 3D Flyover — troubleshooting\n\n## The headless dead-end (why we render through Remotion)\n\nCesium's globe **will not draw in a standalone headless Playwright/Chromium** harness. Verified on\nApple M4 (ANGLE Metal active, WebGL working): the skybox/stars render, but the globe surface produces\n**zero draw commands** (`scene.frameState.commandList.length === 0`), `globe.tilesLoaded` never goes\ntrue, and frames come back as the black starfield. No network failures; `sampleTerrainMostDetailed`\nsucceeds (terrain data is reachable). Dead-ends tried, all failed:\n\n- default render loop, manual `scene.render()`, manual `viewer.render()`, headed mode (context-destroyed).\n\n**What works:** render Cesium **through Remotion** — same headless Chrome, but driven by Remotion's frame\nloop with these four non-negotiables:\n\n1. `useDefaultRenderLoop = false` — drive frames by hand.\n2. Per frame call **`viewer.render()`**, NOT `scene.render()`. `viewer.render()` does the full frame\n   (`initializeFrame` → tile streaming → render); `scene.render()` skips frame-init, so tiles never\n   advance and the globe never appears. **This is the single most important line.**\n3. `contextOptions: { webgl: { preserveDrawingBuffer: true } }` so Remotion's screenshot captures pixels.\n4. Gate init + every frame with `delayRender(…, {timeoutInMilliseconds})` — tile loading can exceed Remotion's\n   default; use 60–120 s.\n\nThe standalone `flythrough.html` / `render.mjs` / `probe.mjs` from the original spike are kept only as the\nrecord of this dead-end. The canonical render path is the Remotion component\n(`../assets/CesiumFlythrough.tsx`).\n\n## Symptom → fix\n\n| Symptom                                                   | Cause                                                                                                         | Fix                                                                                                 |\n| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |\n| Frames are black with stars                               | Globe not drawing (headless Playwright, or `scene.render()` used)                                             | Render through Remotion; use `viewer.render()`; `useDefaultRenderLoop=false`.                       |\n| Screenshots blank/transparent                             | No `preserveDrawingBuffer`                                                                                    | `contextOptions:{ webgl:{ preserveDrawingBuffer:true } }`.                                          |\n| \"delayRender timed out\"                                   | Cold tiles exceed the default                                                                                 | `delayRender(…, {timeoutInMilliseconds: 120000})` + `--timeout=180000`.                             |\n| Globe is a dark/navy sphere                               | Imagery layer didn't attach                                                                                   | `baseLayer:false` then `viewer.imageryLayers.addImageryProvider(...)`.                              |\n| High-pitch frame shows a void/starfield above the horizon | No atmosphere                                                                                                 | `viewer.scene.skyAtmosphere.show = true`.                                                           |\n| 403 on tiles in headless                                  | Domain-locked MapTiler key                                                                                    | Use an **unrestricted** key.                                                                        |\n| Google root tileset returns 403                           | Map Tiles API disabled, billing absent, wrong key, or application restriction blocks local headless rendering | Enable Map Tiles API and billing; restrict the key to that API while allowing the Remotion request. |\n| Google scene shows a duplicate/competing surface          | MapTiler or the Cesium globe is still enabled                                                                 | Do not add MapTiler; set `viewer.scene.globe.show=false`.                                           |\n| Google mesh remains coarse                                | Screen-space error is too high or the capture starts before refinement                                        | Lower `maximumScreenSpaceError`; settle on `tileset.tilesLoaded`.                                   |\n| WebGL unavailable / software renderer                     | Missing GL flag                                                                                               | Render with `--gl=angle`.                                                                           |\n| Camera looks at sky / ground, not terrain                 | Pitch sign / convention                                                                                       | Cesium pitch 0 = horizon, negative = down (inverse of MapLibre); `-(90 - PITCH_FROM_NADIR)`.        |\n| Aim/turn-probe clamps near the end                        | Path too short                                                                                                | `PATHKM ≥ TRAVEL_KM + 2·LOOK_AHEAD_KM`; raise `WINDOW_KM` in prep.                                  |\n| Path feels like straight-then-corner                      | Douglas-Peucker simplification                                                                                | Use resample → moving-average smooth (see architecture §2), not `turf.simplify`.                    |\n| Camera bumps left and right instead of swerving           | Sparse route vertices are still being followed as straight segments                                           | Keep `pathSmoothingPasses={3}`; use sparse intentional control points and arc-length movement.      |\n\n## Gotchas checklist\n\n- **`viewer.render()`, never `scene.render()`** per frame. The single biggest trap.\n- Cesium loads from **CDN**; set `window.CESIUM_BASE_URL` _before_ injecting the script.\n- `preserveDrawingBuffer: true` or screenshots are blank.\n- `delayRender` uses `timeoutInMilliseconds`; set it to at least 60,000.\n- Terrain: `baseLayer:false`, then add MapTiler imagery.\n- Google: no MapTiler, hide the globe, retain `showCreditsOnScreen:true`.\n- Always `skyAtmosphere.show = true`.\n- Validate the path's heading-delta probe and render one **still** (framing + bank) before the full mp4.\n- Cesium pitch/roll conventions are inverted vs MapLibre.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md"},{"path":"remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs","content":"// Camera-path generator for the Cesium flythrough. Turns a river/route centerline GeoJSON into a LONG,\n// CONTINUOUSLY-curving camera path so the camera banks through smooth flowing curves (no\n// straight-then-corner). Method: clip → resample to even spacing → moving-average smooth (inherently\n// continuous curvature) → dampen lateral deviation toward the straight chord (dials swerve amplitude).\n// No Douglas-Peucker (that concentrates curvature at sparse control points → corners).\n//\n// RUN (out of the box, against the shipped sample):\n//   node prep-cesium-path.mjs\n//     → reads  assets/sample-river.geojson   (override: node prep-cesium-path.mjs <input.geojson> <output.json>)\n//     → writes assets/cesium-path.json        (then import that JSON in CesiumFlythrough.tsx, or copy it\n//                                               into your Remotion project's src/geo/ and adjust the import)\n//\n// ADAPT for a new location: change START (a point ON your centerline where the corridor opens),\n// WINDOW_KM, and DAMP/SMOOTH below. Input must be a single LineString feature (features[0].geometry).\n\nimport {readFileSync, writeFileSync, mkdirSync} from 'fs';\nimport {dirname, resolve} from 'path';\nimport {fileURLToPath} from 'url';\n\nconst __dir = dirname(fileURLToPath(import.meta.url));\nconst IN = process.argv[2] || resolve(__dir, '../assets/sample-river.geojson');\nconst OUT = process.argv[3] || resolve(__dir, '../assets/cesium-path.json');\nconst havKm = (a, b) => {\n\tconst R = 6371,\n\t\tr = Math.PI / 180,\n\t\tdLat = (b[1] - a[1]) * r,\n\t\tdLng = (b[0] - a[0]) * r;\n\tconst h =\n\t\tMath.sin(dLat / 2) ** 2 +\n\t\tMath.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;\n\treturn 2 * R * Math.asin(Math.sqrt(h));\n};\n\nconst gorge = JSON.parse(readFileSync(IN, 'utf8')).features[0].geometry\n\t.coordinates;\n\n// ADAPT: clip ~24 km of river from the reach where the flythrough opens. START must be a point ON the\n// centerline (the script snaps to the nearest vertex). The sample's opening is the Yarlung gorge:\nconst START = [94.968, 29.757];\nlet s0 = 0,\n\tbest = Infinity;\ngorge.forEach((p, i) => {\n\tconst d = havKm(p, START);\n\tif (d < best) {\n\t\tbest = d;\n\t\ts0 = i;\n\t}\n});\nconst WINDOW_KM = 30; // clip to ~end of gorge data; smoothing+dampening shrink it to the usable corridor\nconst clip = [];\nfor (let i = s0, acc = 0; i < gorge.length; i++) {\n\tif (i > s0) acc += havKm(gorge[i - 1], gorge[i]);\n\tif (acc > WINDOW_KM) break;\n\tclip.push(gorge[i]);\n}\n\n// Resample to even arc-length spacing so curvature is distributed evenly along the path.\nconst STEP_KM = 0.1;\nconst resample = (coords) => {\n\tconst out = [coords[0].slice()];\n\tlet carry = 0,\n\t\tfrom = coords[0];\n\tfor (let i = 1; i < coords.length; i++) {\n\t\tlet segLen = havKm(from, coords[i]);\n\t\twhile (carry + segLen >= STEP_KM) {\n\t\t\tconst t = (STEP_KM - carry) / segLen;\n\t\t\tconst np = [\n\t\t\t\tfrom[0] + (coords[i][0] - from[0]) * t,\n\t\t\t\tfrom[1] + (coords[i][1] - from[1]) * t,\n\t\t\t];\n\t\t\tout.push(np);\n\t\t\tfrom = np;\n\t\t\tsegLen = havKm(from, coords[i]);\n\t\t\tcarry = 0;\n\t\t}\n\t\tcarry += segLen;\n\t\tfrom = coords[i];\n\t}\n\treturn out;\n};\n\n// Moving-average smoothing — inherently continuous (no kinks). Window in points; repeat for extra glass.\nconst smoothMA = (coords, w, passes) => {\n\tlet c = coords;\n\tfor (let p = 0; p < passes; p++) {\n\t\tc = c.map((_, i) => {\n\t\t\tlet sx = 0,\n\t\t\t\tsy = 0,\n\t\t\t\tn = 0;\n\t\t\tfor (\n\t\t\t\tlet j = Math.max(0, i - w);\n\t\t\t\tj <= Math.min(c.length - 1, i + w);\n\t\t\t\tj++\n\t\t\t) {\n\t\t\t\tsx += c[j][0];\n\t\t\t\tsy += c[j][1];\n\t\t\t\tn++;\n\t\t\t}\n\t\t\treturn [sx / n, sy / n];\n\t\t});\n\t}\n\treturn c;\n};\n\nconst SMOOTH_W = 28; // ±2.8 km window — turns meanders into smooth flowing curves\nconst SMOOTH_PASSES = 2;\nconst DAMP = 0.45; // keep 45% of the (already-smooth) deviation → gentle, continuous swerve\n\nconst even = resample(clip);\nconst sm = smoothMA(even, SMOOTH_W, SMOOTH_PASSES);\n\nconst lat0 = (sm[0][1] * Math.PI) / 180;\nconst kx = 111.32 * Math.cos(lat0),\n\tky = 110.57;\nconst toXY = (p) => [(p[0] - sm[0][0]) * kx, (p[1] - sm[0][1]) * ky];\nconst toLL = (xy) => [sm[0][0] + xy[0] / kx, sm[0][1] + xy[1] / ky];\nconst A = toXY(sm[0]),\n\tB = toXY(sm[sm.length - 1]);\nconst AB = [B[0] - A[0], B[1] - A[1]],\n\tlen2 = AB[0] ** 2 + AB[1] ** 2;\nconst path = sm.map((p) => {\n\tconst P = toXY(p);\n\tconst t = ((P[0] - A[0]) * AB[0] + (P[1] - A[1]) * AB[1]) / len2;\n\tconst proj = [A[0] + t * AB[0], A[1] + t * AB[1]];\n\treturn toLL([\n\t\tproj[0] + (P[0] - proj[0]) * DAMP,\n\t\tproj[1] + (P[1] - proj[1]) * DAMP,\n\t]);\n});\n\nmkdirSync(dirname(OUT), {recursive: true});\nwriteFileSync(OUT, JSON.stringify(path));\n\nlet len = 0;\nfor (let i = 1; i < path.length; i++) len += havKm(path[i - 1], path[i]);\nconsole.log(\n\t`cesium-path: clip ${clip.length} → resample ${even.length} → smooth → ${path.length} pts · ${len.toFixed(1)} km`,\n);\nconst bear = (a, b) => {\n\tconst r = Math.PI / 180;\n\tconst y = Math.sin((b[0] - a[0]) * r) * Math.cos(b[1] * r);\n\tconst x =\n\t\tMath.cos(a[1] * r) * Math.sin(b[1] * r) -\n\t\tMath.sin(a[1] * r) * Math.cos(b[1] * r) * Math.cos((b[0] - a[0]) * r);\n\treturn (Math.atan2(y, x) * 180) / Math.PI;\n};\n// heading sampled every ~1.5 km — should change gradually & continuously (no big jumps = no corners)\nconst stepPts = Math.round(1.5 / STEP_KM);\nlet prev = null,\n\ths = [];\nfor (let i = 0; i + stepPts < path.length; i += stepPts) {\n\tconst h = bear(path[i], path[i + stepPts]);\n\tif (prev !== null) {\n\t\tlet d = h - prev;\n\t\twhile (d > 180) d -= 360;\n\t\twhile (d < -180) d += 360;\n\t\ths.push(d.toFixed(0));\n\t}\n\tprev = h;\n}\nconsole.log(`  heading deltas every 1.5km (deg): ${hs.join(', ')}`);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs"},{"path":"remotion-maps/techniques/cesium/TECHNIQUE.md","content":"# CesiumJS — 3D flyovers in Remotion\n\nInstructions for achieving map animations with \"flight-simulator\" perspective in Remotion.\n\n## Modes\n\n| Mode        | Data                                                  | Use for                                                |\n| ----------- | ----------------------------------------------------- | ------------------------------------------------------ |\n| `landscape` | MapTiler `terrain-quantized-mesh-v2` + `satellite-v2` | Mountains, gorges, rivers, coastlines and rural routes |\n| `city`      | Google Photorealistic 3D Tiles                        | Cities, architecture and recognizable landmarks        |\n\nDo not use footprint extrusions for city flyovers. They produce crude building blocks rather than\ntextured architecture.\n\n## Credentials\n\nFor `landscape`, set:\n\n```text\nREMOTION_MAPTILER_KEY=...\n```\n\nCreate a MapTiler key at https://cloud.maptiler.com/account/keys/.\n\nFor `city`, set:\n\n```text\nREMOTION_GOOGLE_MAPS_API_KEY=...\n```\n\nCreate a billing-enabled Google Map Tiles API key by following\nhttps://developers.google.com/maps/documentation/tile/get-api-key. Enable the **Map Tiles API** and\nrestrict the key to that API. Ensure its application restriction permits local headless Remotion\nrequests.\n\n## Build the flight\n\n1. Copy `assets/CesiumFlythrough.tsx`, a path JSON and `assets/example-Root.tsx` into the Remotion\n   project, or import the component directly.\n2. Supply the camera route as `[longitude, latitude][]`. Use only meaningful control points; do not hand-author dozens of tiny corrections.\n3. Leave `pathSmoothingPasses={3}` initially. The component applies repeated Chaikin corner cutting, turning straight-then-corner input into a continuous swerve. Increase to `4` for a softer route or reduce to `2` when the camera must follow a tight corridor.\n4. Set absolute camera altitudes for the location. City cameras normally fly lower than landscape\n   cameras.\n5. Render a middle-frame still before rendering the full video.\n\n```tsx\n<CesiumFlythrough\n  mode=\"city\"\n  path={cameraPath}\n  pathSmoothingPasses={3}\n  altitudeStart={700}\n  altitudeEnd={500}\n  lookAheadKm={0.7}\n  travelKm={4.5}\n/>\n```\n\n## Camera behavior\n\nWalk the smoothed curve by arc length for constant ground speed. Aim at a real point farther along\nthe curve rather than its next vertex. Derive roll from the change in look-ahead bearing so the\ncamera banks into a turn instead of twitching left and right.\n\nFor landscape routes, `scripts/prep-cesium-path.mjs` also clips, resamples, smooths and dampens a\nGeoJSON centerline before the component applies its final curve smoothing.\n\n\n## Mechanics\n\n- Set `viewer.useDefaultRenderLoop = false`.\n- Call `viewer.render()`, never `scene.render()`, while settling.\n- Use `preserveDrawingBuffer: true`.\n- Gate initialization and every frame with `delayRender`.\n- Drive camera animation from `useCurrentFrame()`; do not use CSS transitions or browser-timed animation.\n- Settle landscapes on `globe.tilesLoaded` and cities on `tileset.tilesLoaded`.\n- Keep all provider attribution visible.\n- Record the source and effective date of custom or disputed geography.\n- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.\n- Read `references/3d-flyover-architecture.md` for camera math, `references/3d-data-sources.md` for provider details, and `references/3d-troubleshooting.md` for blank, coarse, unauthorized or timed-out renders.\n\n## Files\n\n- `assets/CesiumFlythrough.tsx` — reusable two-mode component.\n- `assets/flight-path.ts` — dependency-free Chaikin route smoothing.\n- `assets/example-Root.tsx` — landscape and city compositions.\n- `assets/cesium-path.json` — sample landscape route.\n- `assets/city-path.json` — sample city route.\n- `assets/sample-river.geojson` — sample path-preparation input.\n- `scripts/prep-cesium-path.mjs` — dependency-free landscape route preparation.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md"},{"path":"remotion-maps/techniques/mapbox/references/render-stability.md","content":"# Moving Map Render Stability\n\nRead this reference before building a moving 2D MapTiler scene or diagnosing a wavering Remotion render.\n\n## Symptom and cause\n\nIf basemap detail shimmers or jitters during a pan/zoom, the likely cause is per-frame `map.jumpTo()`.\nHeadless MapTiler capture can resample both vector hillshade and satellite imagery differently frame to\nframe. Tile retries, easing changes, and label changes do not solve that renderer effect.\n\n## Required pattern: fixed map plate\n\nFor any 2D pan/zoom:\n\n1. Render the MapTiler canvas once at the largest required zoom in an oversized container. Size it from the camera route and keep each dimension below the browser's reliable WebGL render-buffer limit (commonly 4096 px). Do **not** blindly use 3×: a 1920×1080 composition becomes 5760 px wide and Chromium may silently downsample it, causing visible pixelation during the CSS zoom.\n2. Keep the map's camera static.\n3. For each frame, calculate the approved target centre/zoom, then move the canvas with CSS `translate` + `scale`.\n4. Apply the same transform to every projected HTML overlay.\n5. Continue to animate GeoJSON data and paint properties imperatively; only the renderer camera is frozen.\n\nKeep pitch and bearing constant. Use a 3D engine such as Cesium for genuine changing pitch/bearing or a terrain flythrough.\n\n```ts\nconst baseZoom = Math.max(start.zoom, end.zoom);\nconst map = new maptilersdk.Map({\n  container,\n  style,\n  center: end.center,\n  zoom: baseZoom,\n  pitch: end.pitch ?? 0,\n  bearing: end.bearing ?? 0,\n  interactive: false,\n  fadeDuration: 0,\n  canvasContextAttributes: {preserveDrawingBuffer: true},\n});\n\n// Per Remotion frame. `camera` is the approved centre/zoom interpolation.\nconst projected = map.project(camera.center);\nconst scale = 2 ** (camera.zoom - baseZoom);\nconst plate = {\n  transform: `translate(${width / 2 - projected.x * scale}px, ${height / 2 - projected.y * scale}px) scale(${scale})`,\n  transformOrigin: \"0 0\",\n};\n\n// Convert label projection with exactly the same plate transform.\nconst labelX = labelPoint.x * scale + width / 2 - projected.x * scale;\nconst labelY = labelPoint.y * scale + height / 2 - projected.y * scale;\n```\n\n### Plate sizing and sharpness\n\n- Render at the maximum zoom reached by **any** camera waypoint, including intermediate or hold cameras. The CSS scale should never exceed `1`; otherwise the plate is being enlarged.\n- Centre the frozen map on the midpoint of the camera route's geographic extent, not automatically on the final camera. This minimizes required overscan.\n- Keep the largest canvas dimension at or below 4096 px unless the actual render environment has been tested with a larger `MAX_RENDERBUFFER_SIZE`.\n- For 1920×1080, a 3840×2160 plate is a safe default. For 1080×1920, use approximately 2700×3840 when the route needs extra horizontal pan room.\n- If the route cannot fit within that plate at the required zoom, split the shot into two fixed plates with a deliberate editorial transition. Do not trade sharpness for one enormous canvas.\n- Distinguish failure modes: repeating shimmer means the live renderer is moving; steadily soft tiles during a CSS push means the fixed plate is underspecified, internally downsampled, or being scaled above `1`.\n\n## Verification\n\n- Render a short MP4, not only a Studio preview.\n- Inspect static terrain texture and satellite detail while the camera moves.\n- If any underlying map detail wavers, use the fixed map plate. Do not approve it as a minor preview artefact.\n- Render WebGL with `--gl=angle`, `preserveDrawingBuffer:true`, and conservative concurrency (`1`) while validating.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md"},{"path":"remotion-maps/techniques/mapbox/TECHNIQUE.md","content":"---\nname: maps-mapbox\ndescription: Make deterministic Remotion 2D map animations with Mapbox GL JS and Turf. Use when the user chooses Mapbox for animated routes, map markers, labels, camera movement, or Mapbox styles.\nmetadata:\n  tags: map, map animation, mapbox, turf, geojson, route animation\n---\n\nUse Mapbox GL JS for rendering maps in Remotion when the user wants Mapbox styles or higher-fidelity map visuals and has a Mapbox access token. Use Turf for geospatial operations such as great-circle routes, distances, slicing lines, and positions along routes.\n\nUse this technique only when the user has a Mapbox access token and wants Mapbox styles or data.\n\n## Core rules\n\n- Prefer `@turf/turf` for geospatial work. Do not hand-roll distance, great-circle, route slicing, or coordinate interpolation unless the user explicitly needs a custom non-geodesic effect.\n- Use GeoJSON sources and Mapbox layers for lines, markers, and labels. Avoid DOM `Marker` elements unless the user specifically asks for HTML markers.\n- Keep the live map camera static by default. Before moving it on every frame, read [moving-map stability](references/render-stability.md). Prefer a fixed map plate for satellite imagery, hillshade, or a modest 2D reframe.\n- Use a live per-frame camera only after rendering a short MP4 and checking for shimmer. This 2D technique does not provide genuine terrain, pitch, bearing, or banking.\n- Disable non-deterministic map behavior: `interactive: false`, `fadeDuration: 0`.\n- Drive animation from `useCurrentFrame()`; do not use CSS transitions or browser-timed animation.\n- Use `delayRender()` / `continueRender()` around map loading and per-frame map updates.\n- Set `preserveDrawingBuffer: true` and render WebGL with `bunx remotion ... --gl=angle`.\n- Before continuing the initial render, add sources/layers, apply the frame-0 camera with `jumpTo()` or `setFreeCameraOptions()`, then wait for `idle`.\n- Do not add a `mapInstance.remove()` cleanup function; it can interfere with Remotion's render lifecycle.\n- Use Mapbox style URLs such as `mapbox://styles/mapbox/standard` or a user-provided custom style.\n- Do not install `@types/mapbox-gl`; Mapbox GL JS ships its own types.\n- Keep required provider attribution visible and verify current provider terms before rendering.\n- Record the source and effective date of custom or disputed geography.\n- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.\n\nCoordinates in Mapbox, Turf, and GeoJSON are `[longitude, latitude]`.\n\n```ts\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n```\n\n## Prerequisites\n\nInstall Mapbox GL JS and Turf with the project's package manager.\n\n```bash\nnpm i mapbox-gl @turf/turf\n```\n\n```bash\nbun i mapbox-gl @turf/turf\n```\n\n```bash\nyarn add mapbox-gl @turf/turf\n```\n\n```bash\npnpm i mapbox-gl @turf/turf\n```\n\nImport the Mapbox CSS once in the component or an app-level stylesheet:\n\n```ts\nimport 'mapbox-gl/dist/mapbox-gl.css';\n```\n\nMapbox requires a public access token. Prefer passing it as an input prop or reading it from an environment variable that is available to the bundled Remotion code.\n\n```ts\nconst mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;\n\nif (!mapboxAccessToken) {\n\tthrow new Error('Set REMOTION_MAPBOX_TOKEN to render Mapbox maps.');\n}\n```\n\n## Basic map example\n\n```tsx\nimport {useEffect, useRef, useState} from 'react';\nimport {useDelayRender, useVideoConfig} from 'remotion';\nimport mapboxgl from 'mapbox-gl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\n\nconst mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;\n\nif (!mapboxAccessToken) {\n\tthrow new Error('Set REMOTION_MAPBOX_TOKEN to render Mapbox maps.');\n}\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {width, height} = useVideoConfig();\n\tconst [loadingHandle] = useState(() => delayRender('Loading Mapbox map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mapInstance = new mapboxgl.Map({\n\t\t\taccessToken: mapboxAccessToken,\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'mapbox://styles/mapbox/standard',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.jumpTo({center: zurich, zoom: 7});\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\treturn (\n\t\t<>\n\t\t\t<div ref={containerRef} style={{width, height, position: 'absolute'}} />\n\t\t</>\n\t);\n};\n```\n\nAnimated examples should keep the loaded map in React state and skip per-frame updates until that state is set.\n\n## Animated flight route example\n\nThis example shows the recommended pattern for route animations:\n\n- Turf creates the route and markers.\n- Turf slices the route for line reveal animation.\n- Mapbox renders the route with GeoJSON sources and layers.\n- The camera uses `jumpTo()` with animated center, zoom, bearing, and pitch.\n- Frame 0 is prepared before `continueRender()`.\n\n```tsx\nimport * as turf from '@turf/turf';\nimport {useEffect, useRef, useState} from 'react';\nimport {\n\tAbsoluteFill,\n\tEasing,\n\tinterpolate,\n\tuseCurrentFrame,\n\tuseDelayRender,\n\tuseVideoConfig,\n} from 'remotion';\nimport mapboxgl, {type GeoJSONSource, type Map} from 'mapbox-gl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n\nconst mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;\n\nif (!mapboxAccessToken) {\n\tthrow new Error('Set REMOTION_MAPBOX_TOKEN to render Mapbox maps.');\n}\n\nconst greatCircleLine = (from: [number, number], to: [number, number]) => {\n\tconst route = turf.greatCircle(from, to, {npoints: 100});\n\n\tif (route.geometry.type === 'LineString') {\n\t\treturn turf.lineString(route.geometry.coordinates);\n\t}\n\n\t// Great-circle routes crossing the antimeridian can become MultiLineString.\n\t// Keep the example valid by choosing the longest segment.\n\tconst longestSegment = route.geometry.coordinates.reduce((longest, segment) => {\n\t\treturn segment.length > longest.length ? segment : longest;\n\t});\n\n\treturn turf.lineString(longestSegment);\n};\n\nconst targetRoute = greatCircleLine(zurich, newYork);\nconst targetRouteDistance = turf.length(targetRoute);\n\nconst cityMarkers = turf.featureCollection([\n\tturf.point(zurich, {name: 'Zurich'}),\n\tturf.point(newYork, {name: 'New York'}),\n]);\n\nconst clampProgress = (progress: number) => Math.min(1, Math.max(0, progress));\n\nconst distanceAlong = (totalDistance: number, progress: number) => {\n\t// Keep the route non-empty at progress 0; Turf can error on zero-length slices.\n\treturn Math.max(0.001, totalDistance * clampProgress(progress));\n};\n\nconst getPartialTargetRoute = (progress: number) => {\n\treturn turf.lineSliceAlong(\n\t\ttargetRoute,\n\t\t0,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t);\n};\n\nconst getCameraOptions = (progress: number) => {\n\tconst target = turf.along(\n\t\ttargetRoute,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t).geometry.coordinates as [number, number];\n\n\treturn {\n\t\tcenter: target,\n\t\tzoom: interpolate(progress, [0, 0.5, 1], [7, 2.4, 8], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t}),\n\t\tbearing: interpolate(progress, [0, 1], [-20, 35], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t}),\n\t\tpitch: interpolate(progress, [0, 0.25, 0.75, 1], [25, 55, 55, 30], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t}),\n\t};\n};\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst frame = useCurrentFrame();\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {durationInFrames, height, width} = useVideoConfig();\n\tconst [map, setMap] = useState<Map | null>(null);\n\tconst [loadingHandle] = useState(() => delayRender('Loading Mapbox map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mapInstance = new mapboxgl.Map({\n\t\t\taccessToken: mapboxAccessToken,\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'mapbox://styles/mapbox/standard',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.addSource('trace', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: getPartialTargetRoute(0),\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'trace-line',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'trace',\n\t\t\t\tlayout: {\n\t\t\t\t\t'line-cap': 'round',\n\t\t\t\t\t'line-join': 'round',\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': '#111111',\n\t\t\t\t\t'line-width': 7,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addSource('city-markers', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: cityMarkers,\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-dots',\n\t\t\t\ttype: 'circle',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tpaint: {\n\t\t\t\t\t'circle-color': '#f03b20',\n\t\t\t\t\t'circle-radius': 12,\n\t\t\t\t\t'circle-stroke-color': '#ffffff',\n\t\t\t\t\t'circle-stroke-width': 4,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-labels',\n\t\t\t\ttype: 'symbol',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tlayout: {\n\t\t\t\t\t'text-allow-overlap': true,\n\t\t\t\t\t'text-anchor': 'top',\n\t\t\t\t\t'text-field': ['get', 'name'],\n\t\t\t\t\t'text-offset': [0, 0.9],\n\t\t\t\t\t'text-size': 28,\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'text-color': '#111111',\n\t\t\t\t\t'text-halo-color': '#ffffff',\n\t\t\t\t\t'text-halo-width': 3,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.jumpTo(getCameraOptions(0));\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tsetMap(mapInstance);\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\tuseEffect(() => {\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handle = delayRender('Rendering Mapbox frame');\n\t\tconst timelineProgress = interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t});\n\t\tconst travelProgress = interpolate(timelineProgress, [0.2, 0.82], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t});\n\t\tconst trace = map.getSource('trace') as GeoJSONSource | undefined;\n\n\t\ttrace?.setData(getPartialTargetRoute(travelProgress));\n\t\tmap.jumpTo(getCameraOptions(travelProgress));\n\n\t\tmap.once('idle', () => continueRender(handle));\n\t\t// Force an idle event even if the camera parameters are unchanged from the previous frame.\n\t\tmap.triggerRepaint();\n\t}, [continueRender, delayRender, durationInFrames, frame, map]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: '#e8eef3'}}>\n\t\t\t<div ref={containerRef} style={{height, position: 'absolute', width}} />\n\t\t</AbsoluteFill>\n\t);\n};\n```\n\n## Camera guidance\n\nFor a validated live-camera route animation, animate `center`, `zoom`, `bearing`, and `pitch` with `jumpTo()`:\n\n```ts\nmap.jumpTo({\n\tcenter,\n\tzoom,\n\tbearing,\n\tpitch,\n});\n```\n\nKeep route progress and camera progress separate if the camera needs to lead, lag, zoom out, or zoom back in. For cinematic 3D camera moves, load the 3D flyover branch from the parent skill.\n\n## Lines\n\nUse GeoJSON sources for lines. Unless the user asks, do not add glow effects or extra decorative points.\n\nFor geodesic flight routes, use Turf:\n\n```ts\nconst line = greatCircleLine(start, end);\nconst distance = turf.length(line);\nconst partialLine = turf.lineSliceAlong(\n\tline,\n\t0,\n\t// Keep the route non-empty at progress 0.\n\tMath.max(0.001, distance * progress),\n);\n```\n\nFor a visually straight line on the map, use a simple GeoJSON `LineString` between the two points instead of `greatCircle()`.\n\n## Markers and labels\n\nUse map-native GeoJSON layers for markers and labels:\n\n```tsx\nmapInstance.addSource('markers', {\n\ttype: 'geojson',\n\tdata: turf.featureCollection([\n\t\tturf.point([-118.2437, 34.0522], {name: 'Los Angeles'}),\n\t]),\n});\n\nmapInstance.addLayer({\n\tid: 'marker-dots',\n\ttype: 'circle',\n\tsource: 'markers',\n\tpaint: {\n\t\t'circle-color': '#f03b20',\n\t\t'circle-radius': 12,\n\t\t'circle-stroke-color': '#ffffff',\n\t\t'circle-stroke-width': 4,\n\t},\n});\n\nmapInstance.addLayer({\n\tid: 'marker-labels',\n\ttype: 'symbol',\n\tsource: 'markers',\n\tlayout: {\n\t\t'text-allow-overlap': true,\n\t\t'text-anchor': 'top',\n\t\t'text-field': ['get', 'name'],\n\t\t'text-offset': [0, 0.9],\n\t\t'text-size': 28,\n\t},\n\tpaint: {\n\t\t'text-color': '#111111',\n\t\t'text-halo-color': '#ffffff',\n\t\t'text-halo-width': 3,\n\t},\n});\n```\n\nMake marker sizes and label font sizes large enough for the composition resolution.\n\n## Styles\n\nDefault to Mapbox Standard:\n\n```ts\nstyle: 'mapbox://styles/mapbox/standard'\n```\n\nIf the user requests another style, use any valid Mapbox style URL.\n\n## Rendering\n\nFor WebGL map renders, prefer single concurrency and ANGLE:\n\n```bash\nbunx remotion render [composition-id] out/video.mp4 --gl=angle --concurrency=1\n```\n\nUse the equivalent package runner for the project. In npm projects, use `npx`; in Bun projects, use `bunx`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md"},{"path":"remotion-maps/techniques/maplibre/references/render-stability.md","content":"# Moving Map Render Stability\n\nRead this reference before building a moving 2D MapTiler scene or diagnosing a wavering Remotion render.\n\n## Symptom and cause\n\nIf basemap detail shimmers or jitters during a pan/zoom, the likely cause is per-frame `map.jumpTo()`.\nHeadless MapTiler capture can resample both vector hillshade and satellite imagery differently frame to\nframe. Tile retries, easing changes, and label changes do not solve that renderer effect.\n\n## Required pattern: fixed map plate\n\nFor any 2D pan/zoom:\n\n1. Render the MapTiler canvas once at the largest required zoom in an oversized container. Size it from the camera route and keep each dimension below the browser's reliable WebGL render-buffer limit (commonly 4096 px). Do **not** blindly use 3×: a 1920×1080 composition becomes 5760 px wide and Chromium may silently downsample it, causing visible pixelation during the CSS zoom.\n2. Keep the map's camera static.\n3. For each frame, calculate the approved target centre/zoom, then move the canvas with CSS `translate` + `scale`.\n4. Apply the same transform to every projected HTML overlay.\n5. Continue to animate GeoJSON data and paint properties imperatively; only the renderer camera is frozen.\n\nKeep pitch and bearing constant. Use a 3D engine such as Cesium for genuine changing pitch/bearing or a terrain flythrough.\n\n```ts\nconst baseZoom = Math.max(start.zoom, end.zoom);\nconst map = new maptilersdk.Map({\n  container,\n  style,\n  center: end.center,\n  zoom: baseZoom,\n  pitch: end.pitch ?? 0,\n  bearing: end.bearing ?? 0,\n  interactive: false,\n  fadeDuration: 0,\n  canvasContextAttributes: {preserveDrawingBuffer: true},\n});\n\n// Per Remotion frame. `camera` is the approved centre/zoom interpolation.\nconst projected = map.project(camera.center);\nconst scale = 2 ** (camera.zoom - baseZoom);\nconst plate = {\n  transform: `translate(${width / 2 - projected.x * scale}px, ${height / 2 - projected.y * scale}px) scale(${scale})`,\n  transformOrigin: \"0 0\",\n};\n\n// Convert label projection with exactly the same plate transform.\nconst labelX = labelPoint.x * scale + width / 2 - projected.x * scale;\nconst labelY = labelPoint.y * scale + height / 2 - projected.y * scale;\n```\n\n### Plate sizing and sharpness\n\n- Render at the maximum zoom reached by **any** camera waypoint, including intermediate or hold cameras. The CSS scale should never exceed `1`; otherwise the plate is being enlarged.\n- Centre the frozen map on the midpoint of the camera route's geographic extent, not automatically on the final camera. This minimizes required overscan.\n- Keep the largest canvas dimension at or below 4096 px unless the actual render environment has been tested with a larger `MAX_RENDERBUFFER_SIZE`.\n- For 1920×1080, a 3840×2160 plate is a safe default. For 1080×1920, use approximately 2700×3840 when the route needs extra horizontal pan room.\n- If the route cannot fit within that plate at the required zoom, split the shot into two fixed plates with a deliberate editorial transition. Do not trade sharpness for one enormous canvas.\n- Distinguish failure modes: repeating shimmer means the live renderer is moving; steadily soft tiles during a CSS push means the fixed plate is underspecified, internally downsampled, or being scaled above `1`.\n\n## Verification\n\n- Render a short MP4, not only a Studio preview.\n- Inspect static terrain texture and satellite detail while the camera moves.\n- If any underlying map detail wavers, use the fixed map plate. Do not approve it as a minor preview artefact.\n- Render WebGL with `--gl=angle`, `preserveDrawingBuffer:true`, and conservative concurrency (`1`) while validating.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md"},{"path":"remotion-maps/techniques/maplibre/TECHNIQUE.md","content":"---\nname: maps-maplibre\ndescription: Make deterministic Remotion 2D map animations with MapLibre GL JS and Turf. Use when the user chooses MapLibre for animated routes, map markers, labels, and camera movement.\nmetadata:\n  tags: map, map animation, maplibre, turf, geojson, route animation\n---\n\nUse MapLibre GL JS for rendering maps in Remotion. Use Turf for geospatial operations such as great-circle routes, distances, slicing lines, and positions along routes.\n\n## Core rules\n\n- Prefer `@turf/turf` for geospatial work. Do not hand-roll distance, great-circle, route slicing, or coordinate interpolation unless the user explicitly needs a custom non-geodesic effect.\n- Use GeoJSON sources and MapLibre layers for lines, markers, and labels. Avoid DOM `Marker` elements unless the user specifically asks for HTML markers.\n- Keep the live map camera static by default. Before moving it on every frame, read [moving-map stability](references/render-stability.md). Prefer a fixed map plate for satellite imagery, hillshade, or a modest 2D reframe.\n- Use a live per-frame camera only after rendering a short MP4 and checking for shimmer. This 2D technique does not provide genuine terrain, pitch, bearing, or banking.\n- Disable non-deterministic map behavior: `interactive: false`, `fadeDuration: 0`.\n- Drive animation from `useCurrentFrame()`; do not use CSS transitions or browser-timed animation.\n- Use `delayRender()` / `continueRender()` around map loading and per-frame map updates.\n- Set `preserveDrawingBuffer: true` and render WebGL with `bunx remotion ... --gl=angle`.\n- Before continuing the initial render, add sources/layers, apply the frame-0 camera with `jumpTo()`, then wait for `idle`.\n- Do not add a `mapInstance.remove()` cleanup function; it can interfere with Remotion's render lifecycle.\n- Use standard MapLibre style JSON URLs and layer/source APIs.\n- Do not install `@types/maplibre-gl`; MapLibre ships its own types.\n- Keep required provider attribution visible and verify the current terms of the chosen style and tile providers before rendering.\n- Record the source and effective date of custom or disputed geography.\n- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.\n\nCoordinates in MapLibre, Turf, and GeoJSON are `[longitude, latitude]`.\n\n```ts\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n```\n\n## Prerequisites\n\nInstall MapLibre and Turf with the project's package manager.\n\n```bash\nnpm i maplibre-gl @turf/turf\n```\n\n```bash\nbun i maplibre-gl @turf/turf\n```\n\n```bash\nyarn add maplibre-gl @turf/turf\n```\n\n```bash\npnpm i maplibre-gl @turf/turf\n```\n\nImport the MapLibre CSS once in the component or an app-level stylesheet:\n\n```ts\nimport 'maplibre-gl/dist/maplibre-gl.css';\n```\n\n## Basic map example\n\n```tsx\nimport {useEffect, useRef, useState} from 'react';\nimport {useDelayRender, useVideoConfig} from 'remotion';\nimport * as maplibregl from 'maplibre-gl';\nimport 'maplibre-gl/dist/maplibre-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {width, height} = useVideoConfig();\n\tconst [loadingHandle] = useState(() => delayRender('Loading map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tmaplibregl.setWorkerUrl(\n\t\t\tURL.createObjectURL(\n\t\t\t\tnew Blob(\n\t\t\t\t\t[`import \"https://unpkg.com/maplibre-gl@${maplibregl.getVersion()}/dist/maplibre-gl-worker.mjs\";`],\n\t\t\t\t\t{type: 'text/javascript'},\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\n\t\tconst mapInstance = new maplibregl.Map({\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'https://demotiles.maplibre.org/style.json',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.jumpTo({center: zurich, zoom: 7});\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\treturn (\n\t\t<>\n\t\t\t<div ref={containerRef} style={{width, height, position: 'absolute'}} />\n\t\t</>\n\t);\n};\n```\n\nAnimated examples should keep the loaded map in React state and skip per-frame updates until that state is set.\n\n## Animated flight route example\n\nThis example shows the recommended pattern for route animations:\n\n- Turf creates the route and markers.\n- Turf slices the route for line reveal animation.\n- The camera has a separate route from the target route.\n- MapLibre's `calculateCameraOptionsFromTo()` is used for camera movement.\n- Frame 0 is prepared before `continueRender()`.\n\n```tsx\nimport * as turf from '@turf/turf';\nimport {useEffect, useRef, useState} from 'react';\nimport {\n\tAbsoluteFill,\n\tEasing,\n\tinterpolate,\n\tuseCurrentFrame,\n\tuseDelayRender,\n\tuseVideoConfig,\n} from 'remotion';\nimport * as maplibregl from 'maplibre-gl';\nimport {type GeoJSONSource, type Map} from 'maplibre-gl';\nimport 'maplibre-gl/dist/maplibre-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n\nconst greatCircleLine = (from: [number, number], to: [number, number]) => {\n\tconst route = turf.greatCircle(from, to, {npoints: 100});\n\n\tif (route.geometry.type === 'LineString') {\n\t\treturn turf.lineString(route.geometry.coordinates);\n\t}\n\n\t// Great-circle routes crossing the antimeridian can become MultiLineString.\n\t// Keep the example valid by choosing the longest segment.\n\tconst longestSegment = route.geometry.coordinates.reduce((longest, segment) => {\n\t\treturn segment.length > longest.length ? segment : longest;\n\t});\n\n\treturn turf.lineString(longestSegment);\n};\n\nconst targetRoute = greatCircleLine(zurich, newYork);\nconst targetRouteDistance = turf.length(targetRoute);\n\nconst cameraRoute = greatCircleLine(zurich, newYork);\nconst cameraRouteDistance = turf.length(cameraRoute);\n\nconst cityMarkers = turf.featureCollection([\n\tturf.point(zurich, {name: 'Zurich'}),\n\tturf.point(newYork, {name: 'New York'}),\n]);\n\nconst clampProgress = (progress: number) => Math.min(1, Math.max(0, progress));\n\nconst distanceAlong = (totalDistance: number, progress: number) => {\n\t// Keep the route non-empty at progress 0; Turf can error on zero-length slices.\n\treturn Math.max(0.001, totalDistance * clampProgress(progress));\n};\n\nconst getPartialTargetRoute = (progress: number) => {\n\treturn turf.lineSliceAlong(\n\t\ttargetRoute,\n\t\t0,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t);\n};\n\nconst getCameraOptions = (\n\tmap: Map,\n\tprogress: number,\n\tcameraAltitudeMeters: number,\n\tcameraLatitudeOffset: number,\n) => {\n\tconst target = turf.along(\n\t\ttargetRoute,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t).geometry.coordinates;\n\tconst camera = turf.along(\n\t\tcameraRoute,\n\t\tdistanceAlong(cameraRouteDistance, progress),\n\t).geometry.coordinates;\n\n\treturn map.calculateCameraOptionsFromTo(\n\t\tnew maplibregl.LngLat(camera[0], camera[1] - cameraLatitudeOffset),\n\t\tcameraAltitudeMeters,\n\t\tnew maplibregl.LngLat(target[0], target[1]),\n\t);\n};\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst frame = useCurrentFrame();\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {durationInFrames, height, width} = useVideoConfig();\n\tconst [map, setMap] = useState<Map | null>(null);\n\tconst [loadingHandle] = useState(() => delayRender('Loading MapLibre map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tmaplibregl.setWorkerUrl(\n\t\t\tURL.createObjectURL(\n\t\t\t\tnew Blob(\n\t\t\t\t\t[`import \"https://unpkg.com/maplibre-gl@${maplibregl.getVersion()}/dist/maplibre-gl-worker.mjs\";`],\n\t\t\t\t\t{type: 'text/javascript'},\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\n\t\tconst mapInstance = new maplibregl.Map({\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'https://demotiles.maplibre.org/style.json',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.addSource('trace', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: getPartialTargetRoute(0),\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'trace-line',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'trace',\n\t\t\t\tlayout: {\n\t\t\t\t\t'line-cap': 'round',\n\t\t\t\t\t'line-join': 'round',\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': '#111111',\n\t\t\t\t\t'line-width': 7,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addSource('city-markers', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: cityMarkers,\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-dots',\n\t\t\t\ttype: 'circle',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tpaint: {\n\t\t\t\t\t'circle-color': '#f03b20',\n\t\t\t\t\t'circle-radius': 12,\n\t\t\t\t\t'circle-stroke-color': '#ffffff',\n\t\t\t\t\t'circle-stroke-width': 4,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-labels',\n\t\t\t\ttype: 'symbol',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tlayout: {\n\t\t\t\t\t'text-allow-overlap': true,\n\t\t\t\t\t'text-anchor': 'top',\n\t\t\t\t\t'text-field': ['get', 'name'],\n\t\t\t\t\t'text-offset': [0, 0.9],\n\t\t\t\t\t'text-size': 28,\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'text-color': '#111111',\n\t\t\t\t\t'text-halo-color': '#ffffff',\n\t\t\t\t\t'text-halo-width': 3,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.jumpTo(getCameraOptions(mapInstance, 0, 180000, 1.1));\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tsetMap(mapInstance);\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\tuseEffect(() => {\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handle = delayRender('Rendering MapLibre frame');\n\t\tconst timelineProgress = interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t});\n\t\tconst travelProgress = interpolate(timelineProgress, [0.2, 0.82], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t});\n\t\tconst cameraAltitudeMeters = interpolate(\n\t\t\ttimelineProgress,\n\t\t\t[0, 0.28, 0.74, 1],\n\t\t\t[180000, 2200000, 2200000, 180000],\n\t\t\t{\n\t\t\t\textrapolateLeft: 'clamp',\n\t\t\t\textrapolateRight: 'clamp',\n\t\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t\t},\n\t\t);\n\t\tconst cameraLatitudeOffset = interpolate(\n\t\t\ttimelineProgress,\n\t\t\t[0, 0.28, 0.74, 1],\n\t\t\t[1.1, 8, 8, 1.1],\n\t\t\t{\n\t\t\t\textrapolateLeft: 'clamp',\n\t\t\t\textrapolateRight: 'clamp',\n\t\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t\t},\n\t\t);\n\t\tconst trace = map.getSource('trace') as GeoJSONSource | undefined;\n\n\t\ttrace?.setData(getPartialTargetRoute(travelProgress));\n\t\tmap.jumpTo(\n\t\t\tgetCameraOptions(\n\t\t\t\tmap,\n\t\t\t\ttravelProgress,\n\t\t\t\tcameraAltitudeMeters,\n\t\t\t\tcameraLatitudeOffset,\n\t\t\t),\n\t\t);\n\n\t\tmap.once('idle', () => continueRender(handle));\n\t\t// Force an idle event even if the camera parameters are unchanged from the previous frame.\n\t\tmap.triggerRepaint();\n\t}, [continueRender, delayRender, durationInFrames, frame, map]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: '#e8eef3'}}>\n\t\t\t<div ref={containerRef} style={{height, position: 'absolute', width}} />\n\t\t</AbsoluteFill>\n\t);\n};\n```\n\n## Camera guidance\n\nUse MapLibre's camera helper for camera movement:\n\n```ts\nmap.calculateCameraOptionsFromTo(cameraLngLat, cameraAltitudeMeters, targetLngLat);\n```\n\nA good pattern is to keep two concepts separate:\n\n- `targetRoute`: where the animated line is and where the camera looks.\n- `cameraRoute`: where the camera moves.\n\nThen use Turf to read positions from both routes for the same progress value:\n\n```ts\nconst target = turf.along(targetRoute, targetDistance * progress).geometry.coordinates;\nconst camera = turf.along(cameraRoute, cameraDistance * progress).geometry.coordinates;\n\nmap.jumpTo(\n\tmap.calculateCameraOptionsFromTo(\n\t\tnew maplibregl.LngLat(camera[0], camera[1]),\n\t\tcameraAltitudeMeters,\n\t\tnew maplibregl.LngLat(target[0], target[1]),\n\t),\n);\n```\n\nFor zoom-out / travel / zoom-in animations, animate travel progress separately from camera altitude. Camera altitude is measured in meters. This avoids heavy custom camera math.\n\n## Lines\n\nUse GeoJSON sources for lines. Unless the user asks, do not add glow effects or extra decorative points.\n\nFor geodesic flight routes, use Turf:\n\n```ts\nconst line = greatCircleLine(start, end);\nconst distance = turf.length(line);\nconst partialLine = turf.lineSliceAlong(\n\tline,\n\t0,\n\t// Keep the route non-empty at progress 0.\n\tMath.max(0.001, distance * progress),\n);\n```\n\nFor a visually straight line on the map, use a simple GeoJSON `LineString` between the two points instead of `greatCircle()`.\n\n## Markers and labels\n\nUse map-native GeoJSON layers for markers and labels:\n\n```tsx\nmapInstance.addSource('markers', {\n\ttype: 'geojson',\n\tdata: turf.featureCollection([\n\t\tturf.point([-118.2437, 34.0522], {name: 'Los Angeles'}),\n\t]),\n});\n\nmapInstance.addLayer({\n\tid: 'marker-dots',\n\ttype: 'circle',\n\tsource: 'markers',\n\tpaint: {\n\t\t'circle-color': '#f03b20',\n\t\t'circle-radius': 12,\n\t\t'circle-stroke-color': '#ffffff',\n\t\t'circle-stroke-width': 4,\n\t},\n});\n\nmapInstance.addLayer({\n\tid: 'marker-labels',\n\ttype: 'symbol',\n\tsource: 'markers',\n\tlayout: {\n\t\t'text-allow-overlap': true,\n\t\t'text-anchor': 'top',\n\t\t'text-field': ['get', 'name'],\n\t\t'text-offset': [0, 0.9],\n\t\t'text-size': 28,\n\t},\n\tpaint: {\n\t\t'text-color': '#111111',\n\t\t'text-halo-color': '#ffffff',\n\t\t'text-halo-width': 3,\n\t},\n});\n```\n\nMake marker sizes and label font sizes large enough for the composition resolution.\n\n## Styles\n\nDefault to the stock MapLibre demo style:\n\n```ts\nstyle: 'https://demotiles.maplibre.org/style.json'\n```\n\nIf the user requests another style, use any valid MapLibre style JSON URL.\n\n## Rendering\n\nFor WebGL map renders, prefer single concurrency and ANGLE:\n\n```bash\nbunx remotion render [composition-id] out/video.mp4 --gl=angle --concurrency=1\n```\n\nUse the equivalent package runner for the project. In npm projects, use `npx`; in Bun projects, use `bunx`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md"},{"path":"remotion-maps/techniques/maptiler/assets/CountryLabel.tsx","content":"import React from 'react';\nimport {Easing, interpolate} from 'remotion';\n\n// Reusable country label. Supply typography and final values from the consuming project; the CSS custom\n// properties below provide neutral fallbacks. Positioned by its centre (x,y in screen px).\nexport const CountryLabel: React.FC<{\n\tname: string;\n\tcolor: string;\n\treveal: number;\n\tx: number;\n\ty: number;\n}> = ({name, color, reveal, x, y}) => {\n\tconst e = interpolate(reveal, [0, 1], [0, 1], {\n\t\textrapolateLeft: 'clamp',\n\t\textrapolateRight: 'clamp',\n\t\teasing: Easing.bezier(0.3333333333333333, 1, 0.6666666666666666, 1),\n\t});\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: x,\n\t\t\t\ttop: y,\n\t\t\t\ttransform: 'translate(-50%, -50%)',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\talignItems: 'center',\n\t\t\t\topacity: e,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translateY(${(1 - e) * 16}px)`,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* accent rule — draws out from the centre in the country's colour */}\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\twidth: 64,\n\t\t\t\t\t\theight: 3,\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\tbackground: color,\n\t\t\t\t\t\ttransform: `scaleX(${e})`,\n\t\t\t\t\t\tboxShadow: `0 0 10px ${color}`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: 'var(--map-label-font, system-ui, sans-serif)',\n\t\t\t\t\t\tfontWeight: 'var(--map-label-weight, 600)',\n\t\t\t\t\t\tfontSize: 'var(--map-label-size, 34px)',\n\t\t\t\t\t\tletterSpacing: 'var(--map-label-tracking, 0.16em)',\n\t\t\t\t\t\ttextTransform: 'uppercase',\n\t\t\t\t\t\tcolor: 'var(--map-label-color, #ffffff)',\n\t\t\t\t\t\ttextShadow: 'var(--map-label-shadow, 0 2px 18px rgba(0,0,0,0.9))',\n\t\t\t\t\t\tmarginTop: 13,\n\t\t\t\t\t\tpaddingLeft: 'var(--map-label-tracking, 0.16em)',\n\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{name}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx"},{"path":"remotion-maps/techniques/maptiler/assets/example-Root.tsx","content":"// Minimal Remotion scaffold for the map explainer. In a Remotion project (`bunx create-video@latest`,\n// blank template), this is `src/Root.tsx`; `src/index.ts` is just `registerRoot(RemotionRoot)`.\n//\n// The Composition sets DURATION (the beat) and dimensions. The component reads durationInFrames / width /\n// height from useVideoConfig(). The beat must be long enough for the last country's full sequence after\n// the river reaches it. See references/map-explainer-architecture.md §2.\n// Render with: bunx remotion render src/index.ts MapExplainer out.mp4 --gl=angle --concurrency=1 --timeout=120000\n\nimport React from 'react';\nimport {Composition} from 'remotion';\nimport {RiverReveal} from './RiverReveal'; // → src/components/RiverReveal.tsx in your project\n\nexport const RemotionRoot: React.FC = () => (\n\t<Composition\n\t\tid=\"MapExplainer\"\n\t\tcomponent={RiverReveal}\n\t\tdurationInFrames={12 * 30} // 12 s @ 30 fps — raise if a later country needs more room after the river arrives\n\t\tfps={30}\n\t\twidth={1920}\n\t\theight={1080}\n\t/>\n);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx"},{"path":"remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts","content":"// Surface an existing MapTiler Planet feature without maintaining duplicate GeoJSON.\n// Paint animation is deterministic; geometry slicing is not. For a source-to-end line draw,\n// bake the selected feature to ordered GeoJSON and use RiverReveal.tsx instead.\n\ntype VectorLayerType = 'fill' | 'line' | 'circle' | 'symbol';\n\nexport type MapTilerVectorElement = {\n\tid: string;\n\tsourceLayer: string;\n\ttype: VectorLayerType;\n\tfilter?: unknown[];\n\tminzoom?: number;\n\tmaxzoom?: number;\n\tlayout?: Record<string, unknown>;\n\tpaint: Record<string, unknown>;\n};\n\nconst SOURCE_ID = 'maptiler-planet';\n\nexport const addMapTilerVectorElement = (\n\tmap: any,\n\tapiKey: string,\n\telement: MapTilerVectorElement,\n\tbeforeId?: string,\n) => {\n\tif (!map.getSource(SOURCE_ID)) {\n\t\tmap.addSource(SOURCE_ID, {\n\t\t\ttype: 'vector',\n\t\t\turl: `https://api.maptiler.com/tiles/v3/tiles.json?key=${apiKey}`,\n\t\t});\n\t}\n\n\tif (map.getLayer(element.id)) return;\n\n\tmap.addLayer(\n\t\t{\n\t\t\tid: element.id,\n\t\t\ttype: element.type,\n\t\t\tsource: SOURCE_ID,\n\t\t\t'source-layer': element.sourceLayer,\n\t\t\t...(element.filter ? {filter: element.filter} : {}),\n\t\t\t...(element.minzoom === undefined ? {} : {minzoom: element.minzoom}),\n\t\t\t...(element.maxzoom === undefined ? {} : {maxzoom: element.maxzoom}),\n\t\t\t...(element.layout ? {layout: element.layout} : {}),\n\t\t\tpaint: element.paint,\n\t\t},\n\t\tbeforeId,\n\t);\n};\n\nexport const setVectorElementPaint = (\n\tmap: any,\n\tlayerId: string,\n\tpaint: Record<string, unknown>,\n) => {\n\tfor (const [property, value] of Object.entries(paint)) {\n\t\tmap.setPaintProperty(layerId, property, value);\n\t}\n};\n\n// Example:\n//\n// addMapTilerVectorElement(map, process.env.REMOTION_MAPTILER_KEY!, {\n//   id: \"story-river\",\n//   sourceLayer: \"waterway\",\n//   type: \"line\",\n//   filter: [\n//     \"all\",\n//     [\"==\", [\"get\", \"class\"], \"river\"],\n//     [\"==\", [\"coalesce\", [\"get\", \"name_en\"], [\"get\", \"name\"]], \"Yarlung Tsangpo\"],\n//   ],\n//   layout: {\"line-cap\": \"round\", \"line-join\": \"round\"},\n//   paint: {\"line-color\": \"#E8F7FF\", \"line-width\": 3, \"line-opacity\": 0},\n// });\n//\n// Per Remotion frame:\n// setVectorElementPaint(map, \"story-river\", {\n//   \"line-opacity\": reveal,\n//   \"line-width\": 2 + reveal * 2,\n// });\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts"},{"path":"remotion-maps/techniques/maptiler/assets/RiverReveal.tsx","content":"import * as maptilersdk from '@maptiler/sdk';\nimport * as turf from '@turf/turf';\nimport React, {useEffect, useRef, useState} from 'react';\nimport '@maptiler/sdk/dist/maptiler-sdk.css';\nimport {\n\tAbsoluteFill,\n\tEasing,\n\tcontinueRender,\n\tdelayRender,\n\tinterpolate,\n\tuseCurrentFrame,\n\tuseVideoConfig,\n} from 'remotion';\nimport {CountryLabel} from './CountryLabel';\nimport countryMeta from './sample-data/country-meta.json';\nimport flowCoords from './sample-data/yarlung-flow.json';\nimport {COLORS, COUNTRY, COUNTRY_DARK, FILL_OPACITY} from './tokens';\n\n// Sample route reveal. Replace the imported sample geometry, names, timing, and visual tokens in the\n// consuming production. The renderer stays static; approved centre/zoom motion is a CSS plate transform.\n\nmaptilersdk.config.apiKey = process.env.REMOTION_MAPTILER_KEY as string;\n\nconst line = turf.lineString(flowCoords as [number, number][]);\nconst lineKm = turf.length(line);\n\nconst START = {\n\tcenter: [89.6, 27.7] as [number, number],\n\tzoom: 4.75,\n\tpitch: 0,\n\tbearing: 0,\n};\nconst END = {\n\tcenter: [90.2, 27.0] as [number, number],\n\tzoom: 5.05,\n\tpitch: 0,\n\tbearing: 0,\n};\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\nconst clamp01 = (v: number) => Math.max(0, Math.min(1, v));\n\nconst ORDER = ['china', 'india', 'bangladesh'] as const;\ntype Country = (typeof ORDER)[number];\nconst META = countryMeta as Record<\n\tCountry,\n\t{stop: number; anchor: [number, number]; border: [number, number][][]}\n>;\nconst countryPolygons = {\n\ttype: 'FeatureCollection' as const,\n\tfeatures: ORDER.map((country) => ({\n\t\ttype: 'Feature' as const,\n\t\tproperties: {country},\n\t\tgeometry: {\n\t\t\ttype: 'MultiPolygon' as const,\n\t\t\tcoordinates: META[country].border.map((ring) => [ring]),\n\t\t},\n\t})),\n};\n\n// Pre-build each country's border as ordered segments with cumulative lengths (for the multi-segment draw).\nconst DRAW = Object.fromEntries(\n\tORDER.map((c) => {\n\t\tconst segLines = META[c].border.map((s) => turf.lineString(s));\n\t\tconst segLen = segLines.map((l) => turf.length(l));\n\t\tconst cum: number[] = [];\n\t\tlet acc = 0;\n\t\tfor (const L of segLen) {\n\t\t\tcum.push(acc);\n\t\t\tacc += L;\n\t\t}\n\t\treturn [c, {segLines, segLen, cum, total: acc}];\n\t}),\n) as Record<\n\tCountry,\n\t{segLines: any[]; segLen: number[]; cum: number[]; total: number}\n>;\n\n// Reveal the portion of the border between fromKm and toKm as a MultiLineString (no joins across gaps).\nconst sliceBorder = (\n\td: (typeof DRAW)[Country],\n\tfromKm: number,\n\ttoKm: number,\n) => {\n\tconst out: number[][][] = [];\n\tfor (let i = 0; i < d.segLines.length; i++) {\n\t\tconst start = d.cum[i],\n\t\t\tend = start + d.segLen[i];\n\t\tconst a = Math.max(fromKm, start),\n\t\t\tb = Math.min(toKm, end);\n\t\tif (b - a <= 0.0008) continue;\n\t\tout.push(\n\t\t\tturf.lineSliceAlong(d.segLines[i], a - start, b - start).geometry\n\t\t\t\t.coordinates,\n\t\t);\n\t}\n\treturn {\n\t\ttype: 'Feature' as const,\n\t\tproperties: {},\n\t\tgeometry: {type: 'MultiLineString' as const, coordinates: out},\n\t};\n};\nconst EMPTY = {\n\ttype: 'Feature' as const,\n\tproperties: {},\n\tgeometry: {type: 'MultiLineString' as const, coordinates: [] as number[][][]},\n};\n\n// --- Timing (seconds). River draws over [RIVER_START, RIVER_END]; each country triggers when the river\n// reaches it (stop · span), then runs border → fill → label. Beat length is derived from these. ---\nconst RIVER_START = 0.3;\nconst RIVER_END = 8.0;\nconst BORDER_S = 2.5;\nconst FILL_S = 1.0;\nconst LABEL_S = 0.7;\nconst trigger = (c: Country) =>\n\tRIVER_START + META[c].stop * (RIVER_END - RIVER_START);\n\nexport const RiverReveal: React.FC = () => {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst started = useRef(false);\n\tconst frame = useCurrentFrame();\n\tconst {fps, durationInFrames, width, height} = useVideoConfig();\n\tconst [map, setMap] = useState<any>(null);\n\tconst [labels, setLabels] = useState<\n\t\tRecord<string, {x: number; y: number; reveal: number}>\n\t>({});\n\tconst [plate, setPlate] = useState({x: 0, y: 0, scale: 1});\n\tconst [handle] = useState(() => delayRender('maptiler init A'));\n\n\tuseEffect(() => {\n\t\tif (!ref.current || started.current) return;\n\t\tstarted.current = true;\n\t\tconst m = new maptilersdk.Map({\n\t\t\tcontainer: ref.current,\n\t\t\tstyle: maptilersdk.MapStyle.BASIC,\n\t\t\tcenter: END.center,\n\t\t\tzoom: Math.max(START.zoom, END.zoom),\n\t\t\tpitch: END.pitch,\n\t\t\tbearing: END.bearing,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: true,\n\t\t\tnavigationControl: false,\n\t\t\tgeolocateControl: false,\n\t\t\tmaptilerLogo: true,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {preserveDrawingBuffer: true},\n\t\t} as any);\n\n\t\tm.on('load', () => {\n\t\t\t// Strip basemap labels (symbols) AND the inner admin-1 borders ('Other border[ dash]',\n\t\t\t// admin_level 3–10) to cut basemap clutter. Keep country + disputed borders.\n\t\t\tfor (const l of m.getStyle().layers as any[])\n\t\t\t\tif (l.type === 'symbol' || /other border/i.test(l.id))\n\t\t\t\t\tm.removeLayer(l.id);\n\n\t\t\tm.addSource('countries', {type: 'geojson', data: countryPolygons});\n\t\t\tfor (const c of ORDER) {\n\t\t\t\tm.addLayer({\n\t\t\t\t\tid: `fill-${c}`,\n\t\t\t\t\ttype: 'fill',\n\t\t\t\t\tsource: 'countries',\n\t\t\t\t\tfilter: ['==', ['get', 'country'], c],\n\t\t\t\t\tpaint: {'fill-color': COUNTRY[c], 'fill-opacity': 0},\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Per country: just the border that draws on, settled to a darker shade of the country colour\n\t\t\t// (the electricity now lives on the river, not the borders).\n\t\t\tfor (const c of ORDER) {\n\t\t\t\tm.addSource(`trail-${c}`, {type: 'geojson', data: EMPTY});\n\t\t\t\tm.addLayer({\n\t\t\t\t\tid: `trail-${c}`,\n\t\t\t\t\ttype: 'line',\n\t\t\t\t\tsource: `trail-${c}`,\n\t\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\t'line-color': COUNTRY_DARK[c],\n\t\t\t\t\t\t'line-width': 2,\n\t\t\t\t\t\t'line-opacity': 0.95,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst seed = turf.lineSliceAlong(\n\t\t\t\tline,\n\t\t\t\t0,\n\t\t\t\tMath.max(0.001, lineKm * 0.001),\n\t\t\t);\n\t\t\tm.addSource('river', {type: 'geojson', data: seed});\n\t\t\tm.addSource('river-head', {type: 'geojson', data: seed});\n\t\t\t// Electric water: soft blue glow → icy core → white-hot leading head with its own glow.\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-glow',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': '#49C6FF',\n\t\t\t\t\t'line-width': 11,\n\t\t\t\t\t'line-opacity': 0.32,\n\t\t\t\t\t'line-blur': 6,\n\t\t\t\t},\n\t\t\t});\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-line',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {'line-color': COLORS.river, 'line-width': 3},\n\t\t\t});\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-headglow',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river-head',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': COLORS.riverHeadGlow,\n\t\t\t\t\t'line-width': 16,\n\t\t\t\t\t'line-opacity': 0,\n\t\t\t\t\t'line-blur': 9,\n\t\t\t\t},\n\t\t\t});\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-head',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river-head',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': COLORS.riverHead,\n\t\t\t\t\t'line-width': 4.5,\n\t\t\t\t\t'line-opacity': 0,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tm.once('idle', () => {\n\t\t\t\tsetMap(m);\n\t\t\t\tcontinueRender(handle);\n\t\t\t});\n\t\t});\n\t}, [handle]);\n\n\tuseEffect(() => {\n\t\tif (!map) return;\n\t\tconst h = delayRender(`frame A ${frame}`);\n\t\tconst t = frame / fps; // seconds\n\t\tconst tt = interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t});\n\n\t\t// River draw\n\t\tconst reveal = interpolate(t, [RIVER_START, RIVER_END], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t});\n\t\tconst riverDrawnKm = lineKm * reveal;\n\t\t(map.getSource('river') as any)?.setData(\n\t\t\tturf.lineSliceAlong(line, 0, Math.max(0.001, riverDrawnKm)),\n\t\t);\n\t\t// Electric draw-head leading the river: white-hot core + glow, fading out once the river completes.\n\t\tconst riverHeadKm = lineKm * 0.03;\n\t\t(map.getSource('river-head') as any)?.setData(\n\t\t\tturf.lineSliceAlong(\n\t\t\t\tline,\n\t\t\t\tMath.max(0, riverDrawnKm - riverHeadKm),\n\t\t\t\tMath.max(0.001, riverDrawnKm),\n\t\t\t),\n\t\t);\n\t\tlet riverHeadFade = 0;\n\t\tif (reveal > 0.002 && reveal < 0.999) riverHeadFade = 1;\n\t\telse if (reveal >= 0.999)\n\t\t\triverHeadFade = 1 - clamp01((t - RIVER_END) / 0.5);\n\t\tmap.setPaintProperty(\n\t\t\t'river-headglow',\n\t\t\t'line-opacity',\n\t\t\t0.85 * riverHeadFade,\n\t\t);\n\t\tmap.setPaintProperty('river-head', 'line-opacity', riverHeadFade);\n\n\t\tconst camera = {\n\t\t\tcenter: [\n\t\t\t\tlerp(START.center[0], END.center[0], tt),\n\t\t\t\tlerp(START.center[1], END.center[1], tt),\n\t\t\t] as [number, number],\n\t\t\tzoom: lerp(START.zoom, END.zoom, tt),\n\t\t};\n\t\tconst cameraPoint = map.project(camera.center);\n\t\tconst plateScale = 2 ** (camera.zoom - Math.max(START.zoom, END.zoom));\n\t\tconst plateX = width / 2 - cameraPoint.x * plateScale;\n\t\tconst plateY = height / 2 - cameraPoint.y * plateScale;\n\n\t\tconst pos: Record<string, {x: number; y: number; reveal: number}> = {};\n\t\tfor (const c of ORDER) {\n\t\t\tconst d = DRAW[c];\n\t\t\tconst lt = t - trigger(c); // local seconds since this country triggered\n\n\t\t\t// 1) border draws on (constant duration), settling to a darker shade — no electric head\n\t\t\tconst bp = interpolate(clamp01(lt / BORDER_S), [0, 1], [0, 1], {\n\t\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t\t});\n\t\t\t(map.getSource(`trail-${c}`) as any)?.setData(\n\t\t\t\tbp <= 0 ? EMPTY : sliceBorder(d, 0, d.total * bp),\n\t\t\t);\n\n\t\t\t// 2) fill blooms in (overshoot then settle) after the border completes\n\t\t\tconst fp = clamp01((lt - BORDER_S) / FILL_S);\n\t\t\tconst fo = interpolate(\n\t\t\t\tfp,\n\t\t\t\t[0, 0.6, 1],\n\t\t\t\t[0, FILL_OPACITY * 1.25, FILL_OPACITY],\n\t\t\t\t{\n\t\t\t\t\textrapolateLeft: 'clamp',\n\t\t\t\t\textrapolateRight: 'clamp',\n\t\t\t\t\teasing: Easing.bezier(0.3333333333333333, 1, 0.6666666666666666, 1),\n\t\t\t\t},\n\t\t\t);\n\t\t\tmap.setPaintProperty(`fill-${c}`, 'fill-opacity', fp <= 0 ? 0 : fo);\n\n\t\t\t// 3) label rises in after the fill\n\t\t\tconst lp = clamp01((lt - BORDER_S - FILL_S) / LABEL_S);\n\t\t\tconst p = map.project(META[c].anchor);\n\t\t\tpos[c] = {\n\t\t\t\tx: p.x * plateScale + plateX,\n\t\t\t\ty: p.y * plateScale + plateY,\n\t\t\t\treveal: lp,\n\t\t\t};\n\t\t}\n\t\tsetLabels(pos);\n\n\t\tsetPlate({x: plateX, y: plateY, scale: plateScale});\n\t\tmap.once('idle', () => continueRender(h));\n\t\tmap.triggerRepaint();\n\t}, [map, frame, fps, durationInFrames, width, height]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: COLORS.bg}}>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: width * 2,\n\t\t\t\t\theight: height * 2,\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttransform: `translate(${plate.x}px, ${plate.y}px) scale(${plate.scale})`,\n\t\t\t\t\ttransformOrigin: '0 0',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<AbsoluteFill style={{pointerEvents: 'none'}}>\n\t\t\t\t{ORDER.map((c) =>\n\t\t\t\t\tlabels[c] ? (\n\t\t\t\t\t\t<CountryLabel\n\t\t\t\t\t\t\tkey={c}\n\t\t\t\t\t\t\tname={c.toUpperCase()}\n\t\t\t\t\t\t\tcolor={COUNTRY[c]}\n\t\t\t\t\t\t\treveal={labels[c].reveal}\n\t\t\t\t\t\t\tx={labels[c].x}\n\t\t\t\t\t\t\ty={labels[c].y}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null,\n\t\t\t\t)}\n\t\t\t</AbsoluteFill>\n\t\t</AbsoluteFill>\n\t);\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx"},{"path":"remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json","content":"{\n\t\"china\": {\n\t\t\"stop\": 0,\n\t\t\"anchor\": [87.78260869565217, 30.663811291452628],\n\t\t\"border\": [\n\t\t\t[\n\t\t\t\t[104, 22.607404598007214],\n\t\t\t\t[103.99006555200009, 22.58534088100008],\n\t\t\t\t[103.98556970200013, 22.57025136400007],\n\t\t\t\t[103.98556970200013, 22.554541728000103],\n\t\t\t\t[103.98737837800013, 22.540175680000104],\n\t\t\t\t[103.9853629970001, 22.527153219000056],\n\t\t\t\t[103.97399418100008, 22.515267639000044],\n\t\t\t\t[103.95952478000004, 22.507102763000105],\n\t\t\t\t[103.95094649200013, 22.516456197000068],\n\t\t\t\t[103.94071455900007, 22.52467275],\n\t\t\t\t[103.92541833500007, 22.528238424000065],\n\t\t\t\t[103.91704675300014, 22.533251038000017],\n\t\t\t\t[103.90278405800007, 22.55857249000009],\n\t\t\t\t[103.89461918200004, 22.56921783500009],\n\t\t\t\t[103.88867639200004, 22.571749980000064],\n\t\t\t\t[103.87265669800007, 22.573610332000086],\n\t\t\t\t[103.86681726100005, 22.575419007000065],\n\t\t\t\t[103.84418298400004, 22.599293519000057],\n\t\t\t\t[103.8363281660001, 22.60275583900001],\n\t\t\t\t[103.82966190600007, 22.609163717000044],\n\t\t\t\t[103.80966312700014, 22.638722636000082],\n\t\t\t\t[103.80532230700004, 22.647404277000035],\n\t\t\t\t[103.79421187400004, 22.659444886000088],\n\t\t\t\t[103.72641239500012, 22.716288961000046],\n\t\t\t\t[103.65850956200006, 22.79320933000004],\n\t\t\t\t[103.64693404200005, 22.799048768000134],\n\t\t\t\t[103.60383589700012, 22.776026917000067],\n\t\t\t\t[103.59003829000005, 22.76801707],\n\t\t\t\t[103.58254520700012, 22.755795593000087],\n\t\t\t\t[103.57680912300009, 22.740835267000122],\n\t\t\t\t[103.56833418800005, 22.724970602000027],\n\t\t\t\t[103.5471468500001, 22.70068267900011],\n\t\t\t\t[103.54456302900013, 22.691019185000087],\n\t\t\t\t[103.54992302200003, 22.64866216800003],\n\t\t\t\t[103.55091923000003, 22.640789694000134],\n\t\t\t\t[103.54621667500004, 22.631436259000097],\n\t\t\t\t[103.5142806400001, 22.587356262000114],\n\t\t\t\t[103.5036352950001, 22.581413473000012],\n\t\t\t\t[103.48544519000006, 22.584100647000028],\n\t\t\t\t[103.47314620000003, 22.59164540600007],\n\t\t\t\t[103.44751469000005, 22.61825876900012],\n\t\t\t\t[103.41092777500012, 22.674741109000067],\n\t\t\t\t[103.40431319200013, 22.68879709900007],\n\t\t\t\t[103.4023494870001, 22.706522115],\n\t\t\t\t[103.40400313400005, 22.723885397000018],\n\t\t\t\t[103.4017293710001, 22.737838033000102],\n\t\t\t\t[103.38751835200003, 22.745176087000104],\n\t\t\t\t[103.37894006300013, 22.756777446000044],\n\t\t\t\t[103.36875980700006, 22.767138570000057],\n\t\t\t\t[103.35708093300008, 22.776026917000067],\n\t\t\t\t[103.34416182500007, 22.782977397000067],\n\t\t\t\t[103.32157922400012, 22.790392965000095],\n\t\t\t\t[103.30964196800011, 22.78793833400003],\n\t\t\t\t[103.2699544680001, 22.723265279000046],\n\t\t\t\t[103.25248783400008, 22.67856516500011],\n\t\t\t\t[103.2448913980001, 22.66869496700012],\n\t\t\t\t[103.22840661600003, 22.655827536000018],\n\t\t\t\t[103.16846195500011, 22.626475321000058],\n\t\t\t\t[103.14174524000009, 22.60704498300008],\n\t\t\t\t[103.13001469000005, 22.57795115100005],\n\t\t\t\t[103.13259851100008, 22.569786276000045],\n\t\t\t\t[103.14469079600008, 22.55578196300003],\n\t\t\t\t[103.14572432500006, 22.54555002900007],\n\t\t\t\t[103.14200362100013, 22.537798564000056],\n\t\t\t\t[103.09125736500005, 22.50508738200007],\n\t\t\t\t[103.07441084800007, 22.49816274000007],\n\t\t\t\t[103.05828780100006, 22.495475566000053],\n\t\t\t\t[103.04418013600008, 22.486483867000018],\n\t\t\t\t[103.04485192900006, 22.4728929650001],\n\t\t\t\t[103.04908939600011, 22.45682159400006],\n\t\t\t\t[103.04505863500009, 22.440543518000126],\n\t\t\t\t[103.02903894100007, 22.43015655500001],\n\t\t\t\t[103.00893680900009, 22.43031158500004],\n\t\t\t\t[102.9890930580001, 22.437597962000027],\n\t\t\t\t[102.95653690600005, 22.45971547400005],\n\t\t\t\t[102.9195882570001, 22.469223938000127],\n\t\t\t\t[102.90258671100008, 22.47723378500008],\n\t\t\t\t[102.89369836400004, 22.487362366000056],\n\t\t\t\t[102.85928186100011, 22.550510966],\n\t\t\t\t[102.85313236500014, 22.568442689000065],\n\t\t\t\t[102.8451741940001, 22.585237529000054],\n\t\t\t\t[102.83184167500008, 22.599706930000067],\n\t\t\t\t[102.81339318800013, 22.608698629000017],\n\t\t\t\t[102.77122522000008, 22.617793681000094],\n\t\t\t\t[102.75189823400007, 22.625286764000023],\n\t\t\t\t[102.69272871900006, 22.6705036420001],\n\t\t\t\t[102.67216149900008, 22.67835845900005],\n\t\t\t\t[102.63226729400003, 22.684973043000056],\n\t\t\t\t[102.61247522000008, 22.691587626000043],\n\t\t\t\t[102.60611901900012, 22.696703593000038],\n\t\t\t\t[102.59118453000008, 22.712568258000132],\n\t\t\t\t[102.58668868000007, 22.716082256000092],\n\t\t\t\t[102.5761983650001, 22.713808493000087],\n\t\t\t\t[102.57035892700003, 22.70709055600004],\n\t\t\t\t[102.56575972500008, 22.699545797],\n\t\t\t\t[102.55836999500008, 22.694946595000047],\n\t\t\t\t[102.53578739400012, 22.695825094],\n\t\t\t\t[102.52891442900005, 22.707814026000037],\n\t\t\t\t[102.52633060700003, 22.72595245400008],\n\t\t\t\t[102.51578861500008, 22.745176087000104],\n\t\t\t\t[102.49434289600009, 22.76039479600003],\n\t\t\t\t[102.46778121000006, 22.76858551000005],\n\t\t\t\t[102.44271814000012, 22.765174866000038],\n\t\t\t\t[102.42561324100006, 22.745305278000032],\n\t\t\t\t[102.42561324100006, 22.745176087000104],\n\t\t\t\t[102.41522627800009, 22.7098294070001],\n\t\t\t\t[102.4072681070001, 22.693447978000037],\n\t\t\t\t[102.39496911700007, 22.680528870000032],\n\t\t\t\t[102.38463383000004, 22.677738343000087],\n\t\t\t\t[102.37316166200003, 22.67835845900005],\n\t\t\t\t[102.36272302300011, 22.677428283],\n\t\t\t\t[102.35585005700005, 22.669935201000058],\n\t\t\t\t[102.35626346800007, 22.658721415000016],\n\t\t\t\t[102.3633431400001, 22.65143503800003],\n\t\t\t\t[102.37269657400003, 22.64575063100007],\n\t\t\t\t[102.37858768800004, 22.639084371000067],\n\t\t\t\t[102.38246342000008, 22.63081614200003],\n\t\t\t\t[102.38432377100008, 22.628852437000077],\n\t\t\t\t[102.37688236500003, 22.615571595000077],\n\t\t\t\t[102.25254886900007, 22.495475566000053],\n\t\t\t\t[102.24252364200004, 22.477182109000083],\n\t\t\t\t[102.23663252800003, 22.443437398000114],\n\t\t\t\t[102.23130985600011, 22.426332500000072],\n\t\t\t\t[102.2180290120001, 22.410674540000016],\n\t\t\t\t[102.20355961100006, 22.41248321500011],\n\t\t\t\t[102.18655806500004, 22.421061503000132],\n\t\t\t\t[102.16454390500007, 22.425505676000043],\n\t\t\t\t[102.14702559400007, 22.421061503000132],\n\t\t\t\t[102.12883549000003, 22.410881246000073],\n\t\t\t\t[102.11865523300008, 22.39754872600004],\n\t\t\t\t[102.10734543400008, 22.39754872600004],\n\t\t\t\t[102.10062015800008, 22.405765280000068],\n\t\t\t\t[102.0999483650001, 22.414860331000042],\n\t\t\t\t[102.09534916200005, 22.423128561000098],\n\t\t\t\t[102.08553064000006, 22.429123027000017],\n\t\t\t\t[102.07591882300005, 22.432430319000034],\n\t\t\t\t[102.01457889800008, 22.446072896000132],\n\t\t\t\t[101.9949935300001, 22.4474164840001],\n\t\t\t\t[101.97421960500003, 22.445142720000078],\n\t\t\t\t[101.95287723800004, 22.436874491000125],\n\t\t\t\t[101.90936568200004, 22.435892639000073],\n\t\t\t\t[101.89164066600011, 22.42969146700007],\n\t\t\t\t[101.88151208500005, 22.412173157000026],\n\t\t\t\t[101.87727461800011, 22.39186431900002],\n\t\t\t\t[101.86792118300008, 22.378841858000058],\n\t\t\t\t[101.84259973100006, 22.38333770800007],\n\t\t\t\t[101.81779504400004, 22.406333720000035],\n\t\t\t\t[101.7848771570001, 22.472221171000044],\n\t\t\t\t[101.75505985600012, 22.49552724300007],\n\t\t\t\t[101.7506156820001, 22.496044007000094],\n\t\t\t\t[101.74177901200011, 22.496044007000094],\n\t\t\t\t[101.7131502680001, 22.491548157000082],\n\t\t\t\t[101.68912072800009, 22.478887431000047],\n\t\t\t\t[101.66865686100004, 22.46229929700003],\n\t\t\t\t[101.65454919500007, 22.446124573000034],\n\t\t\t\t[101.64509240800004, 22.42421376500009],\n\t\t\t\t[101.64416223200004, 22.4040082800001],\n\t\t\t\t[101.64571252500008, 22.384526266000094],\n\t\t\t\t[101.64369714400004, 22.364682516000116],\n\t\t\t\t[101.64111332200014, 22.363287252000035],\n\t\t\t\t[101.62369836500011, 22.346647441000115],\n\t\t\t\t[101.6225098060001, 22.342358297000047],\n\t\t\t\t[101.61987430900007, 22.32644195500002],\n\t\t\t\t[101.60612837700012, 22.284842427000015],\n\t\t\t\t[101.60121911700008, 22.27698761000009],\n\t\t\t\t[101.58798995000012, 22.27135487900007],\n\t\t\t\t[101.5757426350001, 22.27311187800005],\n\t\t\t\t[101.56370202700009, 22.276780905000024],\n\t\t\t\t[101.55098962400007, 22.276677552000095],\n\t\t\t\t[101.54065433700003, 22.271458232000086],\n\t\t\t\t[101.5317143150001, 22.263396708000087],\n\t\t\t\t[101.51574629800007, 22.245361634000105],\n\t\t\t\t[101.51822676600005, 22.22820505800003],\n\t\t\t\t[101.54902592000013, 22.19353017200011],\n\t\t\t\t[101.56153161700013, 22.17611521400009],\n\t\t\t\t[101.56695764200009, 22.149346822000027],\n\t\t\t\t[101.5618416750001, 22.13007151300006],\n\t\t\t\t[101.55502038600014, 22.112398173000074],\n\t\t\t\t[101.55543379800014, 22.090332337000078],\n\t\t\t\t[101.56494226100006, 22.069506734000115],\n\t\t\t\t[101.59217574100006, 22.02811391300007],\n\t\t\t\t[101.60039229400007, 22.007495016000078],\n\t\t\t\t[101.60680017100003, 21.96760081000012],\n\t\t\t\t[101.61630863500011, 21.953648173000133],\n\t\t\t\t[101.6381160890001, 21.940884094000054],\n\t\t\t\t[101.67366947500005, 21.931375631],\n\t\t\t\t[101.68059411600007, 21.9226423140001],\n\t\t\t\t[101.68245446800006, 21.91483917300009],\n\t\t\t\t[101.68307458600003, 21.907139384000104],\n\t\t\t\t[101.68586511300009, 21.898612773000067],\n\t\t\t\t[101.70870609600007, 21.869570618000083],\n\t\t\t\t[101.72126346900012, 21.844352519000054],\n\t\t\t\t[101.72617272900004, 21.837272848000012],\n\t\t\t\t[101.7510807700001, 21.81613718700008],\n\t\t\t\t[101.75154585800004, 21.806370341000033],\n\t\t\t\t[101.73165043200004, 21.75050811800004],\n\t\t\t\t[101.72798140500004, 21.7326797490001],\n\t\t\t\t[101.72854984500009, 21.717538554000086],\n\t\t\t\t[101.73278731300013, 21.71144073500004],\n\t\t\t\t[101.74911706500006, 21.698056539000092],\n\t\t\t\t[101.75480147300004, 21.689788310000054],\n\t\t\t\t[101.75562829600005, 21.68002146400009],\n\t\t\t\t[101.75232100500006, 21.659144186000034],\n\t\t\t\t[101.75593835500013, 21.648653870000075],\n\t\t\t\t[101.77082116700007, 21.638835348],\n\t\t\t\t[101.78952803600004, 21.634029440000077],\n\t\t\t\t[101.80384240700005, 21.62591623900009],\n\t\t\t\t[101.8061678470001, 21.60596913700006],\n\t\t\t\t[101.79355879700006, 21.588244121000045],\n\t\t\t\t[101.77268151900006, 21.582508036],\n\t\t\t\t[101.75092574100006, 21.57966583300002],\n\t\t\t\t[101.73619795800005, 21.570880839000026],\n\t\t\t\t[101.73475101700006, 21.554396057000062],\n\t\t\t\t[101.74823856600005, 21.514501852000123],\n\t\t\t\t[101.74425948100009, 21.495588277000067],\n\t\t\t\t[101.72968672700011, 21.474245911000068],\n\t\t\t\t[101.7255526130001, 21.37538889600002],\n\t\t\t\t[101.71557906100008, 21.338181865000095],\n\t\t\t\t[101.71511397300003, 21.321128642000062],\n\t\t\t\t[101.72250370300003, 21.30423044800007],\n\t\t\t\t[101.73650801600007, 21.292293193000134],\n\t\t\t\t[101.7885461840001, 21.274206442000022],\n\t\t\t\t[101.80115523300003, 21.267075094000077],\n\t\t\t\t[101.81226566600003, 21.25813507100007],\n\t\t\t\t[101.82022383600008, 21.247283020000012],\n\t\t\t\t[101.82373783400004, 21.234467265000134],\n\t\t\t\t[101.8228076580001, 21.224131979000035],\n\t\t\t\t[101.82149033400009, 21.221071138000084],\n\t\t\t\t[101.81929366100013, 21.215967102000022],\n\t\t\t\t[101.81329919500013, 21.209559225000064],\n\t\t\t\t[101.80523767100004, 21.204494934000095],\n\t\t\t\t[101.79603926600004, 21.20294464100006],\n\t\t\t\t[101.77356001800013, 21.207388815000073],\n\t\t\t\t[101.76007246900008, 21.19596832300006],\n\t\t\t\t[101.7635864660001, 21.18465118400009],\n\t\t\t\t[101.77020105000003, 21.170440166000034],\n\t\t\t\t[101.76845334900003, 21.16044957700005],\n\t\t\t\t[101.76673872900005, 21.150648092000054],\n\t\t\t\t[101.75599003200006, 21.143258362000054],\n\t\t\t\t[101.73748986800013, 21.137573954000104],\n\t\t\t\t[101.71790450000009, 21.134473369000048],\n\t\t\t\t[101.70426192200011, 21.135093485000127],\n\t\t\t\t[101.68829390500014, 21.145842183000056],\n\t\t\t\t[101.67015547700004, 21.17705474900002],\n\t\t\t\t[101.65511763500012, 21.18919871100003],\n\t\t\t\t[101.63594567900003, 21.189457092000097],\n\t\t\t\t[101.59651656100004, 21.173385722000134],\n\t\t\t\t[101.58178877800003, 21.175659485000054],\n\t\t\t\t[101.57724125200008, 21.18516794800003],\n\t\t\t\t[101.58096195500008, 21.194728089000037],\n\t\t\t\t[101.58664636300006, 21.204236552000012],\n\t\t\t\t[101.58819665600004, 21.21333160400009],\n\t\t\t\t[101.58395918800011, 21.2243903600001],\n\t\t\t\t[101.57967004400012, 21.227594299000074],\n\t\t\t\t[101.57290043100011, 21.228162740000116],\n\t\t\t\t[101.53910404500004, 21.23885976100003],\n\t\t\t\t[101.51760664900007, 21.242632141000044],\n\t\t\t\t[101.49512740100005, 21.2428388470001],\n\t\t\t\t[101.38149092600008, 21.22247833200008],\n\t\t\t\t[101.36226729400005, 21.215812073000066],\n\t\t\t\t[101.31389815300014, 21.184754537000018],\n\t\t\t\t[101.29271081600007, 21.176072897000054],\n\t\t\t\t[101.27529585800005, 21.174109192000046],\n\t\t\t\t[101.25974125100004, 21.179483541000096],\n\t\t\t\t[101.24434167500004, 21.192867737000128],\n\t\t\t\t[101.23478153500014, 21.206251933000075],\n\t\t\t\t[101.22036381100003, 21.23369211800012],\n\t\t\t\t[101.20899499500013, 21.245526021000032],\n\t\t\t\t[101.21907189900008, 21.28247467100006],\n\t\t\t\t[101.22036381100003, 21.296272278000018],\n\t\t\t\t[101.2184001060001, 21.29994130500002],\n\t\t\t\t[101.20951176000005, 21.308674622000083],\n\t\t\t\t[101.20744470200003, 21.31482411700007],\n\t\t\t\t[101.22284427900007, 21.33508127800006],\n\t\t\t\t[101.23478153500014, 21.363658345000132],\n\t\t\t\t[101.23312788900006, 21.371719869000017],\n\t\t\t\t[101.23080244900007, 21.371771546000033],\n\t\t\t\t[101.22646163000007, 21.370893046],\n\t\t\t\t[101.20796146700013, 21.38350209600013],\n\t\t\t\t[101.17912601800003, 21.39817820200001],\n\t\t\t\t[101.17142622900013, 21.403397522000134],\n\t\t\t\t[101.16827396700006, 21.424533183000065],\n\t\t\t\t[101.18775598100007, 21.505871887000083],\n\t\t\t\t[101.18656742400003, 21.53532745400007],\n\t\t\t\t[101.17452681500004, 21.551657206000115],\n\t\t\t\t[101.15902388500007, 21.5526907350001],\n\t\t\t\t[101.15421797700003, 21.568038635000065],\n\t\t\t\t[101.1577319750001, 21.586228740000095],\n\t\t\t\t[101.16765384900009, 21.600181376000094],\n\t\t\t\t[101.17385502100007, 21.611911926000076],\n\t\t\t\t[101.16672367300004, 21.623280742000063],\n\t\t\t\t[101.1688424080001, 21.637853496000034],\n\t\t\t\t[101.1614526780001, 21.65836903900002],\n\t\t\t\t[101.14925704000007, 21.676765849],\n\t\t\t\t[101.13633793100007, 21.684724019000058],\n\t\t\t\t[101.12765629100005, 21.695162659000104],\n\t\t\t\t[101.12486576400005, 21.74415191700011],\n\t\t\t\t[101.11887129800004, 21.759809876000062],\n\t\t\t\t[101.08280114800004, 21.766734518000064],\n\t\t\t\t[101.06869348200013, 21.76203196200008],\n\t\t\t\t[101.05530928600007, 21.754538880000027],\n\t\t\t\t[101.04290694200012, 21.745392152000065],\n\t\t\t\t[100.99278080300007, 21.71144073500004],\n\t\t\t\t[100.97428064000007, 21.704154358000054],\n\t\t\t\t[100.87749068200003, 21.677334290000047],\n\t\t\t\t[100.83490930200009, 21.657542217000085],\n\t\t\t\t[100.79703047700008, 21.626122946000052],\n\t\t\t\t[100.75661950700004, 21.569847310000043],\n\t\t\t\t[100.70396122300008, 21.51641387900004],\n\t\t\t\t[100.66153487100007, 21.49553660100007],\n\t\t\t\t[100.66132816600003, 21.495329896],\n\t\t\t\t[100.64577356000007, 21.479878642000116],\n\t\t\t\t[100.62174401800007, 21.469078268000075],\n\t\t\t\t[100.57182458500012, 21.45507395500006],\n\t\t\t\t[100.5459863690001, 21.453006897000094],\n\t\t\t\t[100.49710046400003, 21.4617918900001],\n\t\t\t\t[100.4742594810001, 21.45683095300005],\n\t\t\t\t[100.45668949400005, 21.455022278000044],\n\t\t\t\t[100.44346032800013, 21.463497213000053],\n\t\t\t\t[100.43426192300012, 21.478380026000096],\n\t\t\t\t[100.42930098500005, 21.495381572000028],\n\t\t\t\t[100.39912194900006, 21.518894348000018],\n\t\t\t\t[100.38367069500009, 21.527834371000054],\n\t\t\t\t[100.36325850400004, 21.53176178000011],\n\t\t\t\t[100.34196781400004, 21.53036651700002],\n\t\t\t\t[100.32651656100006, 21.524268698000057],\n\t\t\t\t[100.31463098200004, 21.512951559],\n\t\t\t\t[100.30248702000011, 21.49553660100007],\n\t\t\t\t[100.30228031400009, 21.495329896],\n\t\t\t\t[100.28951623500012, 21.483134258000078],\n\t\t\t\t[100.27520186400011, 21.475176087000037],\n\t\t\t\t[100.24409265100007, 21.464530742000036],\n\t\t\t\t[100.23024336800012, 21.45683095300005],\n\t\t\t\t[100.19789392100012, 21.433214824000046],\n\t\t\t\t[100.18714522300007, 21.427892151],\n\t\t\t\t[100.16249556500009, 21.43636708600009],\n\t\t\t\t[100.12833744300008, 21.482359110000075],\n\t\t\t\t[100.1077702230001, 21.49553660100007],\n\t\t\t\t[100.09727990800008, 21.508300680000033],\n\t\t\t\t[100.08999353000007, 21.528919577000025],\n\t\t\t\t[100.08606612200003, 21.550933737000022],\n\t\t\t\t[100.08560103400009, 21.567573548000027],\n\t\t\t\t[100.08864994300012, 21.581836243000012],\n\t\t\t\t[100.0948511150001, 21.59883778900003],\n\t\t\t\t[100.10394616700006, 21.615632629000103],\n\t\t\t\t[100.11572839400009, 21.629481914000067],\n\t\t\t\t[100.12611535700012, 21.6348562620001],\n\t\t\t\t[100.13619226100013, 21.63681996700005],\n\t\t\t\t[100.14373702000006, 21.640023906000025],\n\t\t\t\t[100.14632084200008, 21.649222310000127],\n\t\t\t\t[100.14280684400012, 21.654906718000078],\n\t\t\t\t[100.13515873200004, 21.662348124000076],\n\t\t\t\t[100.12053430200007, 21.673665263000075],\n\t\t\t\t[100.08234541900003, 21.684465638000106],\n\t\t\t\t[99.99671757100003, 21.686119283000053],\n\t\t\t\t[99.96069909700003, 21.70477447500012],\n\t\t\t\t[99.95026045800012, 21.72115590400007],\n\t\t\t\t[99.93920170100012, 21.77701812800005],\n\t\t\t\t[99.92209680200006, 21.812261455000012],\n\t\t\t\t[99.91796268700006, 21.8291596480001],\n\t\t\t\t[99.92018477400006, 21.852000631000024],\n\t\t\t\t[99.95527307100008, 21.924554342000036],\n\t\t\t\t[99.96566003400011, 21.963001608000084],\n\t\t\t\t[99.95046716400009, 21.995351054000068],\n\t\t\t\t[99.9398218180001, 22.005893046000025],\n\t\t\t\t[99.93434411600009, 22.018863831000047],\n\t\t\t\t[99.93491255700013, 22.03250640900005],\n\t\t\t\t[99.94240564000006, 22.04552886900011],\n\t\t\t\t[99.86685469600008, 22.057879537000062],\n\t\t\t\t[99.84783776900008, 22.055037333000072],\n\t\t\t\t[99.84230839000008, 22.047027486],\n\t\t\t\t[99.84173995000003, 22.027080384000087],\n\t\t\t\t[99.83367842700005, 22.01948394800003],\n\t\t\t\t[99.82101770100007, 22.017778626000066],\n\t\t\t\t[99.81342126500004, 22.022997946000075],\n\t\t\t\t[99.80747847600003, 22.03095611600004],\n\t\t\t\t[99.79988204000006, 22.037467347000117],\n\t\t\t\t[99.73916223200007, 22.066767884000072],\n\t\t\t\t[99.72365930200004, 22.07059194000003],\n\t\t\t\t[99.70381555200004, 22.061238505000077],\n\t\t\t\t[99.69379032400013, 22.046924133000076],\n\t\t\t\t[99.68386844900004, 22.039017639000022],\n\t\t\t\t[99.66381799300007, 22.04873280900007],\n\t\t\t\t[99.65927046800005, 22.054572245000045],\n\t\t\t\t[99.65007206200005, 22.071935527000065],\n\t\t\t\t[99.64221724500004, 22.079945374000047],\n\t\t\t\t[99.63353560400009, 22.084751282000056],\n\t\t\t\t[99.53896773300005, 22.106713766000027],\n\t\t\t\t[99.50506799400006, 22.103354798000012],\n\t\t\t\t[99.49039188700004, 22.104336650000064],\n\t\t\t\t[99.43861210200009, 22.12423207600007],\n\t\t\t\t[99.42496952300007, 22.12242340100009],\n\t\t\t\t[99.36492150900006, 22.098858948],\n\t\t\t\t[99.32998824100008, 22.095551656000097],\n\t\t\t\t[99.25288700400006, 22.102786357000056],\n\t\t\t\t[99.2122693280001, 22.112449849000072],\n\t\t\t\t[99.16638065600006, 22.13208689400001],\n\t\t\t\t[99.14446984900007, 22.153532613000053],\n\t\t\t\t[99.17506229700007, 22.168673808000065],\n\t\t\t\t[99.15935266100013, 22.184693502000115],\n\t\t\t\t[99.16638065600006, 22.204640605000023],\n\t\t\t\t[99.1993502200001, 22.245258281000062],\n\t\t\t\t[99.20617150900006, 22.261329651000025],\n\t\t\t\t[99.21836714700004, 22.310008851000063],\n\t\t\t\t[99.22570520000005, 22.321222637000105],\n\t\t\t\t[99.24368859900005, 22.34122141600004],\n\t\t\t\t[99.2483394780001, 22.353675435000028],\n\t\t\t\t[99.24637577300007, 22.365922750000053],\n\t\t\t\t[99.24058801300009, 22.372950745000068],\n\t\t\t\t[99.23738407400003, 22.38013376900001],\n\t\t\t\t[99.24306848200007, 22.39315623000006],\n\t\t\t\t[99.28275598100004, 22.411914775000056],\n\t\t\t\t[99.3450777590001, 22.472841288],\n\t\t\t\t[99.35344934100004, 22.484106751000056],\n\t\t\t\t[99.35779016200013, 22.495475566000053],\n\t\t\t\t[99.35634322100003, 22.50617258700005],\n\t\t\t\t[99.34662805200003, 22.523070781000044],\n\t\t\t\t[99.34414758300005, 22.533251038000017],\n\t\t\t\t[99.34704146400003, 22.55335317000008],\n\t\t\t\t[99.35737675000013, 22.587097881000048],\n\t\t\t\t[99.35499963400008, 22.60854360000006],\n\t\t\t\t[99.30787072800007, 22.719596252000045],\n\t\t\t\t[99.30797408000012, 22.745176087000104],\n\t\t\t\t[99.31696578000003, 22.754116109000037],\n\t\t\t\t[99.32719771300003, 22.76049814900007],\n\t\t\t\t[99.33846317600006, 22.764916484000068],\n\t\t\t\t[99.3506588140001, 22.76814626100004],\n\t\t\t\t[99.3590303960001, 22.77489003500007],\n\t\t\t\t[99.37887414600004, 22.813233948000075],\n\t\t\t\t[99.40357548100008, 22.841061707000065],\n\t\t\t\t[99.41442753200005, 22.856900533000058],\n\t\t\t\t[99.416908, 22.874341330000092],\n\t\t\t\t[99.41122359200006, 22.919248149000097],\n\t\t\t\t[99.41339400300006, 22.930746155000023],\n\t\t\t\t[99.42993046000004, 22.936740622000045],\n\t\t\t\t[99.48450077400008, 22.910256450000063],\n\t\t\t\t[99.51529992700006, 22.90880951000007],\n\t\t\t\t[99.53803755700011, 22.92643117300004],\n\t\t\t\t[99.53462691200008, 22.949323832000076],\n\t\t\t\t[99.49876346900004, 22.99516082800004],\n\t\t\t\t[99.49039188700004, 23.0120073450001],\n\t\t\t\t[99.49163212100012, 23.028207906000105],\n\t\t\t\t[99.49504276500005, 23.043478292000046],\n\t\t\t\t[99.49307906100012, 23.057379252000132],\n\t\t\t\t[99.47819624900006, 23.0657508340001],\n\t\t\t\t[99.40326542100007, 23.068334656],\n\t\t\t\t[99.38104455600006, 23.08164133800001],\n\t\t\t\t[99.35096887200007, 23.11926178000003],\n\t\t\t\t[99.33381229700012, 23.129622904000044],\n\t\t\t\t[99.31407189900006, 23.126470642000086],\n\t\t\t\t[99.30218632100014, 23.112595520000028],\n\t\t\t\t[99.29402144400012, 23.096782532000034],\n\t\t\t\t[99.28482303900012, 23.088152568000098],\n\t\t\t\t[99.26673628800012, 23.08386342400003],\n\t\t\t\t[99.25743452900008, 23.07921254500006],\n\t\t\t\t[99.23614384000007, 23.062314352000058],\n\t\t\t\t[99.22487837700004, 23.056888327000095],\n\t\t\t\t[99.21661014900008, 23.057379252000132],\n\t\t\t\t[99.20958215400009, 23.061539206000063],\n\t\t\t\t[99.20214074800003, 23.067275289000023],\n\t\t\t\t[99.19966027900006, 23.073838196000096],\n\t\t\t\t[99.1993502200001, 23.09226084400011],\n\t\t\t\t[99.1941825770001, 23.09577484200007],\n\t\t\t\t[99.18488081900006, 23.0948446660001],\n\t\t\t\t[99.18271040800005, 23.095206401],\n\t\t\t\t[99.17867964700008, 23.09642079700005],\n\t\t\t\t[99.16400354000007, 23.09768687000009],\n\t\t\t\t[99.1386820890001, 23.105205790000028],\n\t\t\t\t[99.13000044800003, 23.10623931900001],\n\t\t\t\t[99.09217329900008, 23.101510926000017],\n\t\t\t\t[99.0749133710001, 23.10166595500006],\n\t\t\t\t[99.05506962100009, 23.109598287000026],\n\t\t\t\t[99.0392566330001, 23.127142436000085],\n\t\t\t\t[99.03315881300006, 23.146417745000022],\n\t\t\t\t[99.02644087800013, 23.160447897000026],\n\t\t\t\t[99.00938765500007, 23.162153218000086],\n\t\t\t\t[98.99037072800013, 23.160034485000025],\n\t\t\t\t[98.9707336840001, 23.162204895000016],\n\t\t\t\t[98.93342330000013, 23.172152608000104],\n\t\t\t\t[98.85900923700012, 23.179387309000063],\n\t\t\t\t[98.86014611800005, 23.212279358000032],\n\t\t\t\t[98.91068566900009, 23.297597148000094],\n\t\t\t\t[98.89652632700012, 23.323280335000064],\n\t\t\t\t[98.86045617700012, 23.322375997000037],\n\t\t\t\t[98.85342818200007, 23.3248823040001],\n\t\t\t\t[98.85322147600004, 23.334985047000046],\n\t\t\t\t[98.86210982300008, 23.340591940000067],\n\t\t\t\t[98.87378869600013, 23.344571025000064],\n\t\t\t\t[98.88185022000005, 23.34968699200006],\n\t\t\t\t[98.89011844900006, 23.3679029340001],\n\t\t\t\t[98.89228886000006, 23.386894023000067],\n\t\t\t\t[98.88960168400013, 23.406789449000073],\n\t\t\t\t[98.87554569500003, 23.44642527300003],\n\t\t\t\t[98.86397017400009, 23.46660491900012],\n\t\t\t\t[98.84888065700005, 23.480402527000066],\n\t\t\t\t[98.83007043500004, 23.480014954000055],\n\t\t\t\t[98.80981327300003, 23.474098002000048],\n\t\t\t\t[98.7999947510001, 23.48073842400005],\n\t\t\t\t[98.78087447100006, 23.532854106000016],\n\t\t\t\t[98.78438846900013, 23.54703928700006],\n\t\t\t\t[98.7962740480001, 23.557917175000043],\n\t\t\t\t[98.84329960100007, 23.5840137740001],\n\t\t\t\t[98.85022424400012, 23.590628357000114],\n\t\t\t\t[98.85735559100004, 23.604348450000046],\n\t\t\t\t[98.85601200400009, 23.610007020000083],\n\t\t\t\t[98.84960412600009, 23.614735413000076],\n\t\t\t\t[98.80795292200003, 23.67579111800005],\n\t\t\t\t[98.80030481000006, 23.69271514900005],\n\t\t\t\t[98.79906457500005, 23.743228862000066],\n\t\t\t\t[98.79317346200003, 23.758473409000104],\n\t\t\t\t[98.77787723800009, 23.76929962100006],\n\t\t\t\t[98.73839644400005, 23.77555247000005],\n\t\t\t\t[98.70832076000005, 23.78469919800004],\n\t\t\t\t[98.68496301300013, 23.784802551000084],\n\t\t\t\t[98.67566125500008, 23.787386373000075],\n\t\t\t\t[98.66367232300013, 23.796946513000066],\n\t\t\t\t[98.66356897000003, 23.803070171000044],\n\t\t\t\t[98.66832320200012, 23.808702902000064],\n\t\t\t\t[98.67142378700004, 23.816738587000046],\n\t\t\t\t[98.66418908700007, 23.89037750200005],\n\t\t\t\t[98.66480920400005, 23.9033741250001],\n\t\t\t\t[98.67297408100006, 23.928308004000073],\n\t\t\t\t[98.6745243740001, 23.936886292000096],\n\t\t\t\t[98.6657393800001, 23.953216045000133],\n\t\t\t\t[98.65881473800005, 23.961122539000073],\n\t\t\t\t[98.66325891200012, 23.969545797000066],\n\t\t\t\t[98.67989872200008, 23.976263733000096],\n\t\t\t\t[98.69922570900007, 23.981560568000035],\n\t\t\t\t[98.71679569500009, 23.988407695],\n\t\t\t\t[98.76557824800005, 24.02706166600008],\n\t\t\t\t[98.85621871000006, 24.083802388000024],\n\t\t\t\t[98.87347863800005, 24.11449819000005],\n\t\t\t\t[98.86696740800011, 24.143256124000075],\n\t\t\t\t[98.86572717300004, 24.145684917000025],\n\t\t\t\t[98.85528853400012, 24.13896698000009],\n\t\t\t\t[98.8180815020001, 24.12896759100009],\n\t\t\t\t[98.7161755780001, 24.12134531700012],\n\t\t\t\t[98.68175907400007, 24.106875916],\n\t\t\t\t[98.64041792900014, 24.100752258000014],\n\t\t\t\t[98.61251265500005, 24.087548930000125],\n\t\t\t\t[98.59711307800006, 24.083078919000016],\n\t\t\t\t[98.58522749900004, 24.075715027000015],\n\t\t\t\t[98.57024133400006, 24.08209706600006],\n\t\t\t\t[98.54305953000005, 24.093956807000083],\n\t\t\t\t[98.50326867700005, 24.121267802000077],\n\t\t\t\t[98.47453658000006, 24.127830709000065],\n\t\t\t\t[98.43495243300009, 24.130259501000026],\n\t\t\t\t[98.39557499200009, 24.128063253000036],\n\t\t\t\t[98.37872847500012, 24.122404684000102],\n\t\t\t\t[98.3473092050001, 24.10493804900007],\n\t\t\t\t[98.33066939300005, 24.099486186000078],\n\t\t\t\t[98.2932556560001, 24.10013214100006],\n\t\t\t\t[98.21915165200005, 24.117366231000048],\n\t\t\t\t[98.18153120900013, 24.118658142000086],\n\t\t\t\t[98.10505009000008, 24.101527405000027],\n\t\t\t\t[97.88997277800013, 24.022617493],\n\t\t\t\t[97.87664025900011, 24.014400940000044],\n\t\t\t\t[97.83633264200006, 23.971767883000084],\n\t\t\t\t[97.81783247900012, 23.95815114400007],\n\t\t\t\t[97.8040865480001, 23.954507955000068],\n\t\t\t\t[97.78951379400013, 23.95313853],\n\t\t\t\t[97.76780969300012, 23.946472270000086],\n\t\t\t\t[97.74817264900008, 23.93406992600002],\n\t\t\t\t[97.69680627400004, 23.887121887000077],\n\t\t\t\t[97.67696252500014, 23.878698629000084],\n\t\t\t\t[97.65567183400009, 23.87254913300002],\n\t\t\t\t[97.64734483100005, 23.868524415000067],\n\t\t\t\t[97.63706831900004, 23.86355743500006],\n\t\t\t\t[97.62466597500003, 23.846710918],\n\t\t\t\t[97.61970503700007, 23.865986226000032],\n\t\t\t\t[97.61546757000013, 23.875132955000097],\n\t\t\t\t[97.60988651500003, 23.88314280200008],\n\t\t\t\t[97.5726794840001, 23.907559916000125],\n\t\t\t\t[97.53299198400003, 23.92370880200012],\n\t\t\t\t[97.51645552600013, 23.942829081000113],\n\t\t\t\t[97.70765832500007, 24.12529856400009],\n\t\t\t\t[97.72006066900008, 24.1474419150001],\n\t\t\t\t[97.72305790200005, 24.171264751000066],\n\t\t\t\t[97.71871708200007, 24.181548361000083],\n\t\t\t\t[97.70455774000004, 24.19924753800008],\n\t\t\t\t[97.70156050600013, 24.210926412000063],\n\t\t\t\t[97.70466109300008, 24.221726786000076],\n\t\t\t\t[97.71117232300003, 24.228470561000037],\n\t\t\t\t[97.71851037600004, 24.233974101000015],\n\t\t\t\t[97.72409143100003, 24.241518860000056],\n\t\t\t\t[97.71840702300011, 24.277666524],\n\t\t\t\t[97.64450972500003, 24.302393698000103],\n\t\t\t\t[97.63820520100012, 24.328102722],\n\t\t\t\t[97.65360477700011, 24.338722229000084],\n\t\t\t\t[97.67427535100012, 24.340840963000048],\n\t\t\t\t[97.68957157400007, 24.346473694000068],\n\t\t\t\t[97.68833134000005, 24.36771270800004],\n\t\t\t\t[97.68099328600005, 24.377763774000087],\n\t\t\t\t[97.66259647700014, 24.390062765000025],\n\t\t\t\t[97.65732548000011, 24.402000020000074],\n\t\t\t\t[97.6554651290001, 24.412076925000108],\n\t\t\t\t[97.65226119000005, 24.422722270000108],\n\t\t\t\t[97.6473002520001, 24.432334086000097],\n\t\t\t\t[97.6398588460001, 24.439284567000087],\n\t\t\t\t[97.62435591600007, 24.442281799000014],\n\t\t\t\t[97.60068811000014, 24.44192006400003],\n\t\t\t\t[97.51955611200009, 24.430783794],\n\t\t\t\t[97.51325158700007, 24.438586935],\n\t\t\t\t[97.51387170400005, 24.46168629900008],\n\t\t\t\t[97.53857303900003, 24.597259420000015],\n\t\t\t\t[97.53278527800006, 24.723324077000072],\n\t\t\t\t[97.53609257000005, 24.745028178000084],\n\t\t\t\t[97.5361959230001, 24.745079854],\n\t\t\t\t[97.60399540200012, 24.78644683900002],\n\t\t\t\t[97.6425460210001, 24.816780904000055],\n\t\t\t\t[97.66394006400003, 24.829777527000104],\n\t\t\t\t[97.68595422400011, 24.833524068000102],\n\t\t\t\t[97.72657190000012, 24.826289368000047],\n\t\t\t\t[97.74848270700011, 24.826470235],\n\t\t\t\t[97.76522587100004, 24.834660950000043],\n\t\t\t\t[97.77297733600005, 24.85468556800008],\n\t\t\t\t[97.76098840300006, 24.870291850000015],\n\t\t\t\t[97.72409143100003, 24.897215272000025],\n\t\t\t\t[97.70827844300004, 24.927290955],\n\t\t\t\t[97.70331750500003, 24.960415548000086],\n\t\t\t\t[97.70517785700014, 25.02883514400007],\n\t\t\t\t[97.69959680200009, 25.065008647000113],\n\t\t\t\t[97.7036275640001, 25.073922831000047],\n\t\t\t\t[97.72161096200006, 25.079271342000098],\n\t\t\t\t[97.73752730300009, 25.090510967000043],\n\t\t\t\t[97.7540637620001, 25.11355865500009],\n\t\t\t\t[97.77700809800012, 25.15862050400004],\n\t\t\t\t[97.80098596300013, 25.237633769000112],\n\t\t\t\t[97.82362023900009, 25.26161163300013],\n\t\t\t\t[97.86031050700007, 25.244093323000058],\n\t\t\t\t[97.87178267400009, 25.227660217],\n\t\t\t\t[97.87881066900007, 25.213552551000063],\n\t\t\t\t[97.88893925000013, 25.205646057000124],\n\t\t\t\t[97.90991988100006, 25.20755808500006],\n\t\t\t\t[97.93079716000011, 25.218513489000102],\n\t\t\t\t[97.97627242100009, 25.27225697900012],\n\t\t\t\t[97.99239546700005, 25.28248891200009],\n\t\t\t\t[98.03352990700012, 25.301299134000104],\n\t\t\t\t[98.04489872300013, 25.311944479000104],\n\t\t\t\t[98.06257206300012, 25.35431915300002],\n\t\t\t\t[98.0756978760001, 25.376074932000037],\n\t\t\t\t[98.08996057100006, 25.385945129],\n\t\t\t\t[98.10835738100008, 25.388890686000096],\n\t\t\t\t[98.11207808500006, 25.396228739000023],\n\t\t\t\t[98.11021773300007, 25.410439759000056],\n\t\t\t\t[98.11197473100003, 25.448473613000104],\n\t\t\t\t[98.10887414600012, 25.458240459000066],\n\t\t\t\t[98.10474003100006, 25.466973775000028],\n\t\t\t\t[98.09946903500003, 25.493328756],\n\t\t\t\t[98.09977909300005, 25.50004669200011],\n\t\t\t\t[98.10463667800013, 25.506764628000056],\n\t\t\t\t[98.12303348900014, 25.522215882000054],\n\t\t\t\t[98.13419559800008, 25.534618225000102],\n\t\t\t\t[98.13936324100007, 25.550224508000056],\n\t\t\t\t[98.13843306500013, 25.598955384000092],\n\t\t\t\t[98.1400867110001, 25.611461080000097],\n\t\t\t\t[98.15021529100005, 25.613063050000036],\n\t\t\t\t[98.23238081900007, 25.586553040000027],\n\t\t\t\t[98.24716027900007, 25.579163310000112],\n\t\t\t\t[98.2766158450001, 25.552446594000045],\n\t\t\t\t[98.28943160000006, 25.550379538000087],\n\t\t\t\t[98.31206587700012, 25.55745920800011],\n\t\t\t\t[98.3326330970001, 25.566967672000104],\n\t\t\t\t[98.34710249800003, 25.577819723000047],\n\t\t\t\t[98.35723107900009, 25.592754212],\n\t\t\t\t[98.36984012900012, 25.636782532000055],\n\t\t\t\t[98.37521447800009, 25.649288229000078],\n\t\t\t\t[98.41324833200008, 25.69207631400009],\n\t\t\t\t[98.41634891800004, 25.700189514],\n\t\t\t\t[98.41665897600012, 25.712591859000057],\n\t\t\t\t[98.41872603400009, 25.724219056000024],\n\t\t\t\t[98.42472050000003, 25.730833639000124],\n\t\t\t\t[98.43226525900008, 25.736104635000046],\n\t\t\t\t[98.43929325400006, 25.7435977170001],\n\t\t\t\t[98.45262577300008, 25.777962545000022],\n\t\t\t\t[98.46130741400009, 25.79465403300007],\n\t\t\t\t[98.47453658000006, 25.80576446500008],\n\t\t\t\t[98.49810103400006, 25.830724183000072],\n\t\t\t\t[98.50946984900003, 25.838062236000056],\n\t\t\t\t[98.52683313100005, 25.838785706000053],\n\t\t\t\t[98.53954553200003, 25.833721415000085],\n\t\t\t\t[98.56238651600012, 25.816358135000073],\n\t\t\t\t[98.59091190600009, 25.806384583000053],\n\t\t\t\t[98.60031701600013, 25.801733704000085],\n\t\t\t\t[98.61003218700006, 25.800596822000088],\n\t\t\t\t[98.62605188000003, 25.806487936000067],\n\t\t\t\t[98.6778316650001, 25.843281555000075],\n\t\t\t\t[98.68485966000003, 25.853100078000054],\n\t\t\t\t[98.69023400900005, 25.86555409700013],\n\t\t\t\t[98.69240441900007, 25.87898997100008],\n\t\t\t\t[98.68982059800004, 25.8915990200001],\n\t\t\t\t[98.68465295400006, 25.897593486000048],\n\t\t\t\t[98.67235396300009, 25.90183095400009],\n\t\t\t\t[98.66728967300003, 25.905758362000043],\n\t\t\t\t[98.65809126800013, 25.925033671000094],\n\t\t\t\t[98.62532841000012, 25.969992168000104],\n\t\t\t\t[98.61623335800004, 25.979397278000064],\n\t\t\t\t[98.6042444260001, 25.982497864],\n\t\t\t\t[98.59246219900007, 25.98074086500013],\n\t\t\t\t[98.5824369720001, 25.98229115900004],\n\t\t\t\t[98.57540897700005, 25.99510691300013],\n\t\t\t\t[98.57716597500013, 26.01732778000006],\n\t\t\t\t[98.5726184500001, 26.035569560000013],\n\t\t\t\t[98.5538082280001, 26.071071269000058],\n\t\t\t\t[98.54729699800004, 26.088279521000047],\n\t\t\t\t[98.54553999900003, 26.105642803000066],\n\t\t\t\t[98.55019087800008, 26.12078399700006],\n\t\t\t\t[98.5630066330001, 26.131222636000118],\n\t\t\t\t[98.60217736800013, 26.13995595300007],\n\t\t\t\t[98.61933394400012, 26.145743714000062],\n\t\t\t\t[98.62574182200012, 26.144348450000066],\n\t\t\t\t[98.62429488100014, 26.108485006000038],\n\t\t\t\t[98.63080611200013, 26.096909485000097],\n\t\t\t\t[98.64444869000005, 26.097891337000064],\n\t\t\t\t[98.68082889800013, 26.12496978800003],\n\t\t\t\t[98.68672001200008, 26.133238017000068],\n\t\t\t\t[98.68651330600005, 26.15411529600003],\n\t\t\t\t[98.69240441900007, 26.159954732000116],\n\t\t\t\t[98.70025923700007, 26.16532908200007],\n\t\t\t\t[98.7055302330001, 26.174940898000088],\n\t\t\t\t[98.70149947100003, 26.191167298],\n\t\t\t\t[98.67700484200009, 26.239329733000076],\n\t\t\t\t[98.66821984900008, 26.248218079000097],\n\t\t\t\t[98.64816939300005, 26.244807434000066],\n\t\t\t\t[98.6421749270001, 26.25452260400003],\n\t\t\t\t[98.64455204300003, 26.271575827000035],\n\t\t\t\t[98.64951298000011, 26.290592753000013],\n\t\t\t\t[98.65778120900006, 26.31162506100013],\n\t\t\t\t[98.6976754150001, 26.35405141200006],\n\t\t\t\t[98.70739058400011, 26.371052959000068],\n\t\t\t\t[98.7134884030001, 26.389449768000063],\n\t\t\t\t[98.7172091060001, 26.408725077000028],\n\t\t\t\t[98.72113651600006, 26.538898011000086],\n\t\t\t\t[98.72795780400003, 26.57259104500004],\n\t\t\t\t[98.74852502400012, 26.6059740190001],\n\t\t\t\t[98.7555530190001, 26.625042623000084],\n\t\t\t\t[98.75069543500007, 26.646126607000028],\n\t\t\t\t[98.74707808400012, 26.655738424000035],\n\t\t\t\t[98.74676802600004, 26.664420064000083],\n\t\t\t\t[98.74738814300008, 26.672688293000036],\n\t\t\t\t[98.74645796800013, 26.681059876000106],\n\t\t\t\t[98.73198856700003, 26.71351267500002],\n\t\t\t\t[98.73436568300014, 26.73428660100008],\n\t\t\t\t[98.74924849500007, 26.77144195600006],\n\t\t\t\t[98.75038537600011, 26.792009176000064],\n\t\t\t\t[98.74242720500013, 26.81040598600005],\n\t\t\t\t[98.71813928200004, 26.842497050000063],\n\t\t\t\t[98.71452193200008, 26.862030741000083],\n\t\t\t\t[98.71865604700008, 26.872676087000073],\n\t\t\t\t[98.73312544800012, 26.88792063400011],\n\t\t\t\t[98.73632938600008, 26.89825592100003],\n\t\t\t\t[98.73570927000003, 26.907299296000062],\n\t\t\t\t[98.71266158100008, 26.995149231000042],\n\t\t\t\t[98.72061975100013, 27.013959452000066],\n\t\t\t\t[98.73167850700003, 27.031064352],\n\t\t\t\t[98.73777632600007, 27.048686015],\n\t\t\t\t[98.73136844900006, 27.068788147000063],\n\t\t\t\t[98.71648563700012, 27.082482402000082],\n\t\t\t\t[98.70273970500006, 27.086823222000064],\n\t\t\t\t[98.69137089100008, 27.092404276000067],\n\t\t\t\t[98.68268925000012, 27.110077617000073],\n\t\t\t\t[98.67256066900006, 27.17560333200008],\n\t\t\t\t[98.67359419800005, 27.207901103000054],\n\t\t\t\t[98.68020878100003, 27.237046611000082],\n\t\t\t\t[98.70418664600004, 27.304174296000028],\n\t\t\t\t[98.70770064400011, 27.337247213000083],\n\t\t\t\t[98.69736535700008, 27.368924866],\n\t\t\t\t[98.69106083200006, 27.373162334000043],\n\t\t\t\t[98.6837227790001, 27.37362742200007],\n\t\t\t\t[98.67731490100005, 27.376107890000057],\n\t\t\t\t[98.67442102100006, 27.3865982060001],\n\t\t\t\t[98.66832320200012, 27.475249126000094],\n\t\t\t\t[98.67111372900007, 27.516151022000102],\n\t\t\t\t[98.68175907400007, 27.55648447700007],\n\t\t\t\t[98.67927860500009, 27.57733591800003],\n\t\t\t\t[98.67421431500003, 27.586120911000123],\n\t\t\t\t[98.6657393800001, 27.597076315],\n\t\t\t\t[98.65592085800006, 27.60676564500004],\n\t\t\t\t[98.6472392170001, 27.611726583000078],\n\t\t\t\t[98.63504357900007, 27.611054789],\n\t\t\t\t[98.62584517500005, 27.6055512490001],\n\t\t\t\t[98.61654341700006, 27.59841990200006],\n\t\t\t\t[98.60455448400006, 27.59273549400011],\n\t\t\t\t[98.5784062090001, 27.59172780400003],\n\t\t\t\t[98.56435022000005, 27.603535869000055],\n\t\t\t\t[98.54336958800008, 27.642525737000042],\n\t\t\t\t[98.5221822520001, 27.656297506000087],\n\t\t\t\t[98.4923132730001, 27.643430074],\n\t\t\t\t[98.47453658000006, 27.65717600500004],\n\t\t\t\t[98.42224003100006, 27.680895487000058],\n\t\t\t\t[98.4102510990001, 27.68425445600009],\n\t\t\t\t[98.40001916500012, 27.675727844000065],\n\t\t\t\t[98.3974353430001, 27.656814270000027],\n\t\t\t\t[98.39815881400011, 27.619813945000075],\n\t\t\t\t[98.39288781700009, 27.587154440000106],\n\t\t\t\t[98.38327600100007, 27.55578684500007],\n\t\t\t\t[98.36394901500012, 27.532170716000067],\n\t\t\t\t[98.32860233600007, 27.52286895700003],\n\t\t\t\t[98.29470259600009, 27.536614889000063],\n\t\t\t\t[98.27568566900004, 27.570101217000072],\n\t\t\t\t[98.25439497900004, 27.648132629000074],\n\t\t\t\t[98.23806522600012, 27.680223694000077],\n\t\t\t\t[98.20437219300004, 27.727300924000062],\n\t\t\t\t[98.20178837100013, 27.736551005000095],\n\t\t\t\t[98.21150354000008, 27.760322164000044],\n\t\t\t\t[98.20840295400006, 27.766161601000036],\n\t\t\t\t[98.20209842900005, 27.7712517290001],\n\t\t\t\t[98.1978609620001, 27.780631002000078],\n\t\t\t\t[98.19848107900003, 27.800448914000057],\n\t\t\t\t[98.20065148900005, 27.813600565000016],\n\t\t\t\t[98.19662072800003, 27.823186544000023],\n\t\t\t\t[98.16241092900003, 27.842849427000075],\n\t\t\t\t[98.14577111900013, 27.860729472000045],\n\t\t\t\t[98.1400867110001, 27.878557841000074],\n\t\t\t\t[98.1567265220001, 27.889203187000064],\n\t\t\t\t[98.17667362500003, 27.898117371000083],\n\t\t\t\t[98.17729374200007, 27.91292266900011],\n\t\t\t\t[98.16582157400006, 27.92969167100007],\n\t\t\t\t[98.14897505700009, 27.944548645000012],\n\t\t\t\t[98.11352502500006, 27.96170522100006],\n\t\t\t\t[98.10711714700011, 27.973074036000057],\n\t\t\t\t[98.11848596200014, 27.99472646100004],\n\t\t\t\t[98.12251672400004, 28.015448710000058],\n\t\t\t\t[98.1279944260001, 28.105469056000018],\n\t\t\t\t[98.12696089700012, 28.124279277000042],\n\t\t\t\t[98.11869266800005, 28.140789897000033],\n\t\t\t\t[98.1150022760001, 28.14388835700008],\n\t\t\t\t[98.04861942600013, 28.199623515000027],\n\t\t\t\t[98.03135949800003, 28.208330994000065],\n\t\t\t\t[97.9910518800001, 28.214015401000026],\n\t\t\t\t[97.98485070800012, 28.2242214970001],\n\t\t\t\t[97.99384240800003, 28.25254018200009],\n\t\t\t\t[97.9929122320001, 28.26892161100004],\n\t\t\t\t[97.97875288900013, 28.280600484],\n\t\t\t\t[97.9447497970001, 28.29884226500006],\n\t\t\t\t[97.8975175380001, 28.35532460500012],\n\t\t\t\t[97.85907027200005, 28.370129903000034],\n\t\t\t\t[97.79726525900003, 28.34392995200001],\n\t\t\t\t[97.76532922400008, 28.352430725000133],\n\t\t\t\t[97.74000777200007, 28.38260976200003],\n\t\t\t\t[97.69959680200009, 28.48802968300008],\n\t\t\t\t[97.67045129400009, 28.511284079000077],\n\t\t\t\t[97.6410990810001, 28.498364970000083],\n\t\t\t\t[97.61360721800003, 28.481983541000133],\n\t\t\t\t[97.58993941300008, 28.49469594300008],\n\t\t\t\t[97.56751184100011, 28.525495097000046],\n\t\t\t\t[97.54622115100011, 28.53846588100008],\n\t\t\t\t[97.52772098800011, 28.52952585900006],\n\t\t\t\t[97.51397505800009, 28.49469594300008],\n\t\t\t\t[97.50301965300008, 28.47772023600008],\n\t\t\t\t[97.48813684100003, 28.44193430600005],\n\t\t\t\t[97.47459761600004, 28.426198832000082],\n\t\t\t\t[97.47149703000014, 28.414959209000116],\n\t\t\t\t[97.46570927000005, 28.40669097900006],\n\t\t\t\t[97.45010298700004, 28.39191152000005],\n\t\t\t\t[97.44534875500011, 28.382971497000128],\n\t\t\t\t[97.4467956950001, 28.374005636000092],\n\t\t\t\t[97.45020634000014, 28.364858907],\n\t\t\t\t[97.45237674900005, 28.355479635000066],\n\t\t\t\t[97.45237674900005, 28.317678324000084],\n\t\t\t\t[97.44782922400009, 28.29760203100004],\n\t\t\t\t[97.43666711400004, 28.286414083000082],\n\t\t\t\t[97.41672001200004, 28.286052348000098],\n\t\t\t\t[97.3982198490001, 28.28889455200006],\n\t\t\t\t[97.38437056500004, 28.284837952000075],\n\t\t\t\t[97.3778593350001, 28.26359893900009],\n\t\t\t\t[97.36959110600003, 28.25347035700004],\n\t\t\t\t[97.33383101400011, 28.235254415],\n\t\t\t\t[97.32349572800013, 28.217477723000073],\n\t\t\t\t[97.2852551680001, 28.235667827],\n\t\t\t\t[97.22965132700011, 28.274606018000085],\n\t\t\t\t[97.22076298000007, 28.28339101200008],\n\t\t\t\t[97.21053104700013, 28.308092346000066],\n\t\t\t\t[97.20277958200012, 28.31155466700004],\n\t\t\t\t[97.19327111900003, 28.311399638000083],\n\t\t\t\t[97.18272912600008, 28.31499115000007],\n\t\t\t\t[97.11554976400004, 28.366564230000066],\n\t\t\t\t[97.07844608600004, 28.3751425170001],\n\t\t\t\t[97.03297082600005, 28.357029928000074],\n\t\t\t\t[96.9974174400001, 28.337082825000053],\n\t\t\t\t[96.96579146400012, 28.330468242000066],\n\t\t\t\t[96.93395878200005, 28.336617737000026],\n\t\t\t\t[96.89788863200005, 28.354704489000042],\n\t\t\t\t[96.71692392905247, 28.436539447625634],\n\t\t\t\t[96.60442611830537, 28.444534241434948],\n\t\t\t\t[96.5615177204665, 28.44729288316006],\n\t\t\t\t[96.51238244700005, 28.428808492000073],\n\t\t\t\t[96.49522587100006, 28.42147043900009],\n\t\t\t\t[96.44112658162652, 28.39541577691665],\n\t\t\t\t[96.36964414401973, 28.378115826943503],\n\t\t\t\t[96.30185249373439, 28.420710938634112],\n\t\t\t\t[96.33645875408492, 28.47966681390912],\n\t\t\t\t[96.40901887262294, 28.558928647938785],\n\t\t\t\t[96.50237514126326, 28.644476217418358],\n\t\t\t\t[96.50104350465409, 28.687631303142155],\n\t\t\t\t[96.59800971353144, 28.709910398443995],\n\t\t\t\t[96.59258426900004, 28.757884013000094],\n\t\t\t\t[96.57666792800006, 28.808526917000066],\n\t\t\t\t[96.52375126100003, 28.864414979000045],\n\t\t\t\t[96.51083215400013, 28.885524801000074],\n\t\t\t\t[96.50039351400005, 28.929243062000054],\n\t\t\t\t[96.49222863800003, 28.94800160700005],\n\t\t\t\t[96.47465865100008, 28.962057597000054],\n\t\t\t\t[96.46008589700011, 28.963349507000103],\n\t\t\t\t[96.45212772700006, 28.970377502000034],\n\t\t\t\t[96.45119755100012, 28.98138458300012],\n\t\t\t\t[96.45760542900013, 28.99458791100001],\n\t\t\t\t[96.36656829155606, 29.036536563468914],\n\t\t\t\t[96.29465549772947, 28.99232448388489],\n\t\t\t\t[96.24858762565306, 28.945343306324006],\n\t\t\t\t[96.19532275757172, 28.941105845485463],\n\t\t\t\t[96.17595371463305, 29.017353609711428],\n\t\t\t\t[96.17462528500005, 29.108844503000043],\n\t\t\t\t[96.1835136310001, 29.123778992000027],\n\t\t\t\t[96.19364221300003, 29.13693064400009],\n\t\t\t\t[96.21007531700008, 29.145767314000082],\n\t\t\t\t[96.31642541500008, 29.171863912000063],\n\t\t\t\t[96.32748417200008, 29.180442200000087],\n\t\t\t\t[96.34236698400014, 29.21064707500001],\n\t\t\t\t[96.36686161300008, 29.24421091700013],\n\t\t\t\t[96.36624149600004, 29.257233379000056],\n\t\t\t\t[96.34991174300006, 29.274234924],\n\t\t\t\t[96.33709598900009, 29.27971262700008],\n\t\t\t\t[96.32324670400004, 29.275010071000096],\n\t\t\t\t[96.30412642400006, 29.261212464000053],\n\t\t\t\t[96.26784956900008, 29.24173044900006],\n\t\t\t\t[96.23529341600005, 29.241213684000016],\n\t\t\t\t[96.20542443800014, 29.256949158000097],\n\t\t\t\t[96.17627893100013, 29.28645640100011],\n\t\t\t\t[96.16604699800013, 29.303173726000054],\n\t\t\t\t[96.15095747900011, 29.35407501200008],\n\t\t\t\t[96.14196578000008, 29.368466899000097],\n\t\t\t\t[96.07453626532634, 29.369285607240855],\n\t\t\t\t[96.01413548284108, 29.364252208700393],\n\t\t\t\t[95.95373470035588, 29.35921881015993],\n\t\t\t\t[95.86313352662813, 29.32398502037684],\n\t\t\t\t[95.79594038900007, 29.352886455000046],\n\t\t\t\t[95.77640669800007, 29.345548401000073],\n\t\t\t\t[95.74478072100004, 29.340432435000068],\n\t\t\t\t[95.7473653601981, 29.27365103497256],\n\t\t\t\t[95.71716496895556, 29.218283651027733],\n\t\t\t\t[95.64669738938943, 29.22835044810863],\n\t\t\t\t[95.59233524600006, 29.249688619000025],\n\t\t\t\t[95.58168990100006, 29.24746653300012],\n\t\t\t\t[95.57290490800006, 29.247259827000065],\n\t\t\t\t[95.56442997300007, 29.2456061810001],\n\t\t\t\t[95.55378462800007, 29.239043275000128],\n\t\t\t\t[95.55068404100012, 29.230284119000046],\n\t\t\t\t[95.55202762800008, 29.220129700000072],\n\t\t\t\t[95.55016727700007, 29.212481588000017],\n\t\t\t\t[95.51533736200014, 29.209432679000074],\n\t\t\t\t[95.51192671700011, 29.19754709900006],\n\t\t\t\t[95.52267541500004, 29.161192729000064],\n\t\t\t\t[95.52143518100007, 29.13786082000003],\n\t\t\t\t[95.51130660000013, 29.131788839000095],\n\t\t\t\t[95.48757683710141, 29.068994487006023],\n\t\t\t\t[95.42982403198397, 29.046524645630395],\n\t\t\t\t[95.36740605062847, 29.03649616327051],\n\t\t\t\t[95.2815531820001, 29.052672221000094],\n\t\t\t\t[95.22491581200012, 29.05936431900001],\n\t\t\t\t[95.21633752500009, 29.06499705000003],\n\t\t\t\t[95.21406376100009, 29.07308441200003],\n\t\t\t\t[95.21282352700013, 29.08186940500012],\n\t\t\t\t[95.2078625900001, 29.089595032000105],\n\t\t\t\t[95.19969771300003, 29.094245911000073],\n\t\t\t\t[95.19153283800006, 29.096829733000092],\n\t\t\t\t[95.11691206900008, 29.108095195000047],\n\t\t\t\t[95.09903202400011, 29.113779603000083],\n\t\t\t\t[95.04766564900007, 29.140806377000033],\n\t\t\t\t[94.98906457600003, 29.15398386700012],\n\t\t\t\t[94.89129276600005, 29.160495097000094],\n\t\t\t\t[94.85408573500007, 29.17000356000007],\n\t\t\t\t[94.81543176300005, 29.16886667900006],\n\t\t\t\t[94.79879195200004, 29.1664378870001],\n\t\t\t\t[94.77657108500011, 29.16669626900007],\n\t\t\t\t[94.76148156800008, 29.174706116000053],\n\t\t\t\t[94.76768273900007, 29.21385101300008],\n\t\t\t\t[94.75641727800013, 29.230516663000017],\n\t\t\t\t[94.70422408000013, 29.284699402000044],\n\t\t\t\t[94.66846399000013, 29.306610209000084],\n\t\t\t\t[94.6304301350001, 29.319451803000064],\n\t\t\t\t[94.59994104000009, 29.316635437000016],\n\t\t\t\t[94.5826811120001, 29.302915345000073],\n\t\t\t\t[94.52862756400003, 29.2312401330001],\n\t\t\t\t[94.51477828000009, 29.22105987600004],\n\t\t\t\t[94.49824182200007, 29.21522043900005],\n\t\t\t\t[94.47498742700003, 29.210802104000052],\n\t\t\t\t[94.42238081900007, 29.210492045000066],\n\t\t\t\t[94.39643925000013, 29.207081400000035],\n\t\t\t\t[94.37287479700012, 29.19630686500001],\n\t\t\t\t[94.36253951000009, 29.185325623000026],\n\t\t\t\t[94.34631311100009, 29.1590739950001],\n\t\t\t\t[94.33577111900013, 29.149617208000038],\n\t\t\t\t[94.32378218600007, 29.146025696000052],\n\t\t\t\t[94.28750533100003, 29.147937724000073],\n\t\t\t\t[94.27078578096348, 29.097929973215642],\n\t\t\t\t[94.30904814105469, 29.059667613124404],\n\t\t\t\t[94.34731050114596, 29.024348511501685],\n\t\t\t\t[94.29138859024334, 28.977256376004746],\n\t\t\t\t[94.2501829716835, 28.933107498976327],\n\t\t\t\t[94.17365825150097, 28.930164240507835],\n\t\t\t\t[94.1353958914097, 28.897788397353693],\n\t\t\t\t[94.07947398050715, 28.883072105010925],\n\t\t\t\t[94.02684940600011, 28.864182435000075],\n\t\t\t\t[94.01144982900013, 28.85302032500003],\n\t\t\t\t[93.99201949100012, 28.844648743000064],\n\t\t\t\t[93.99313607399837, 28.80188742309345],\n\t\t\t\t[93.9815905577272, 28.768130860141966],\n\t\t\t\t[93.96109345404737, 28.72994349590268],\n\t\t\t\t[93.92778566056765, 28.68275160171495],\n\t\t\t\t[93.86307969177443, 28.704870831024095],\n\t\t\t\t[93.78174379684887, 28.68050383781251],\n\t\t\t\t[93.72247522000009, 28.696647441000053],\n\t\t\t\t[93.70552535000007, 28.69189320900007],\n\t\t\t\t[93.66490848182954, 28.690238755807428],\n\t\t\t\t[93.64341027900008, 28.680240174000105],\n\t\t\t\t[93.62553023300006, 28.67235951800005],\n\t\t\t\t[93.60713342300005, 28.672204488000105],\n\t\t\t\t[93.55173628800009, 28.67894826200005],\n\t\t\t\t[93.44621301300003, 28.671894430000023],\n\t\t\t\t[93.35543239724171, 28.624065359777703],\n\t\t\t\t[93.31717003715039, 28.603462550497838],\n\t\t\t\t[93.30284340070244, 28.556921073348917],\n\t\t\t\t[93.2869721652333, 28.520517242676647],\n\t\t\t\t[93.25906765301328, 28.496023260000364],\n\t\t\t\t[93.21883846222534, 28.457435846387227],\n\t\t\t\t[93.1862858334245, 28.431995228097378],\n\t\t\t\t[93.21807344565363, 28.39464655767386],\n\t\t\t\t[93.20782489381371, 28.340539283245555],\n\t\t\t\t[93.12982812476821, 28.325961566073488],\n\t\t\t\t[93.04639880818196, 28.302097099545048],\n\t\t\t\t[92.97492395000006, 28.28230580700007],\n\t\t\t\t[92.96035119600003, 28.270213521000088],\n\t\t\t\t[92.92200728300008, 28.25863800100005],\n\t\t\t\t[92.90381717900004, 28.2496979780001],\n\t\t\t\t[92.88955448400009, 28.23582285600004],\n\t\t\t\t[92.8653699140001, 28.20520457000002],\n\t\t\t\t[92.85028039600013, 28.19194956500003],\n\t\t\t\t[92.8347774660001, 28.183526306000132],\n\t\t\t\t[92.81989465400005, 28.17926300100008],\n\t\t\t\t[92.80532190000008, 28.17802276700003],\n\t\t\t\t[92.79023238100007, 28.178901266000068],\n\t\t\t\t[92.78537479700009, 28.183293762000076],\n\t\t\t\t[92.78289432800011, 28.190941874000046],\n\t\t\t\t[92.77917362500011, 28.195902812],\n\t\t\t\t[92.7700785720001, 28.192182108000097],\n\t\t\t\t[92.70786014900011, 28.155414328000106],\n\t\t\t\t[92.67861128800007, 28.133064270000105],\n\t\t\t\t[92.65484012900009, 28.105830790000127],\n\t\t\t\t[92.63727014200003, 28.071982728000123],\n\t\t\t\t[92.63892378800006, 28.057487488000092],\n\t\t\t\t[92.65422001100012, 28.052087301000128],\n\t\t\t\t[92.68925663200014, 28.048314921],\n\t\t\t\t[92.70134891800006, 28.037824606000058],\n\t\t\t\t[92.70134891800006, 28.025241394000133],\n\t\t\t\t[92.73639150917766, 27.98590893651867],\n\t\t\t\t[92.71077012957788, 27.949702392409918],\n\t\t\t\t[92.68367428669768, 27.910450219011963],\n\t\t\t\t[92.63646812873851, 27.89536981004999],\n\t\t\t\t[92.59291178341888, 27.868193283595886],\n\t\t\t\t[92.57497681769904, 27.847806414432647],\n\t\t\t\t[92.51815087726021, 27.839468002981643],\n\t\t\t\t[92.47510949800005, 27.846595968000074],\n\t\t\t\t[92.43903934800005, 27.823289897000066],\n\t\t\t\t[92.42756717900005, 27.82117116400009],\n\t\t\t\t[92.41733524600005, 27.828948466],\n\t\t\t\t[92.40441613800004, 27.85383066900006],\n\t\t\t\t[92.39284061800004, 27.85602691700005],\n\t\t\t\t[92.38105839100012, 27.842461853000074],\n\t\t\t\t[92.37558068800013, 27.821119487000075],\n\t\t\t\t[92.36793257700003, 27.80383372000007],\n\t\t\t\t[92.35005253100007, 27.802541809000033],\n\t\t\t\t[92.33982059800013, 27.815564270000053],\n\t\t\t\t[92.33465295400003, 27.83127390600002],\n\t\t\t\t[92.32917525300013, 27.832927552000072],\n\t\t\t\t[92.31728967300006, 27.80367869100003],\n\t\t\t\t[92.30385380100006, 27.786160380000055],\n\t\t\t\t[92.28876428200005, 27.793085022000056],\n\t\t\t\t[92.27522505700006, 27.81168853700011],\n\t\t\t\t[92.25827518700004, 27.848197937000023],\n\t\t\t\t[92.24918013500007, 27.862641500000038],\n\t\t\t\t[92.23956831900006, 27.865276998000056],\n\t\t\t\t[92.1262935790001, 27.81272206600009],\n\t\t\t\t[92.10615954418942, 27.786080717238843],\n\t\t\t\t[92.06487820550117, 27.76172129397611],\n\t\t\t\t[91.98889765320416, 27.76939841380579],\n\t\t\t\t[91.96800093766346, 27.746278233869482],\n\t\t\t\t[91.95224735500011, 27.724820455],\n\t\t\t\t[91.90873579900006, 27.731900126000127],\n\t\t\t\t[91.86491418500009, 27.72998809800002],\n\t\t\t\t[91.85637335954294, 27.764539482011514],\n\t\t\t\t[91.82658872441321, 27.807627271770244],\n\t\t\t\t[91.72987134422583, 27.804136158001306],\n\t\t\t\t[91.68013149075769, 27.849823277598603],\n\t\t\t\t[91.6283394780001, 27.852693787000035],\n\t\t\t\t[91.6371244710001, 27.87724009300011],\n\t\t\t\t[91.64890669800008, 27.897213033000057],\n\t\t\t\t[91.65283410700005, 27.91674672500004],\n\t\t\t\t[91.63795129500011, 27.93974273700009],\n\t\t\t\t[91.62172489400012, 27.950723979000074],\n\t\t\t\t[91.6006409100001, 27.959276429000013],\n\t\t\t\t[91.57862675000007, 27.96470245400009],\n\t\t\t\t[91.53749231000012, 27.969353333000058],\n\t\t\t\t[91.49749475100003, 27.98408111600004],\n\t\t\t\t[91.4609078370001, 27.98436533600004],\n\t\t\t\t[91.44643843600005, 27.986354879000075],\n\t\t\t\t[91.43648287100012, 27.989375107000015],\n\t\t\t\t[91.41884322100009, 27.99472646100004],\n\t\t\t\t[91.34143192600004, 28.03056406700007],\n\t\t\t\t[91.3095992430001, 28.056402283000082],\n\t\t\t\t[91.29016890500003, 28.0914130660001],\n\t\t\t\t[91.26970503800004, 28.072861227000075],\n\t\t\t\t[91.24614058500003, 28.071465963],\n\t\t\t\t[91.2206124270001, 28.07487660700012],\n\t\t\t\t[91.19467085800005, 28.07058746400004],\n\t\t\t\t[91.17586063600004, 28.057487488000092],\n\t\t\t\t[91.13379602000003, 28.01410512300002],\n\t\t\t\t[91.11963667900005, 27.994881490000083],\n\t\t\t\t[91.11942997200003, 27.99472646100004],\n\t\t\t\t[91.09255822800003, 27.97167877200006],\n\t\t\t\t[91.05194055200008, 27.96279042600007],\n\t\t\t\t[91.00884240800008, 27.966769512000056],\n\t\t\t\t[90.97514937400013, 27.982091573],\n\t\t\t\t[90.96057662000004, 27.99472646100004],\n\t\t\t\t[90.90952030400007, 28.032656963000036],\n\t\t\t\t[90.85091923100009, 28.044025777000044],\n\t\t\t\t[90.78870080600007, 28.047488098000073],\n\t\t\t\t[90.75527753600005, 28.055173215000096],\n\t\t\t\t[90.7268957930001, 28.06169911800005],\n\t\t\t\t[90.6839010010001, 28.087072245000044],\n\t\t\t\t[90.66746789600012, 28.090327860000016],\n\t\t\t\t[90.65103479000004, 28.086994731000104],\n\t\t\t\t[90.62188928300003, 28.0729645790001],\n\t\t\t\t[90.59739465400008, 28.07058746400004],\n\t\t\t\t[90.57527714000008, 28.06583323200006],\n\t\t\t\t[90.51006148300007, 28.074101461000012],\n\t\t\t\t[90.49259484900011, 28.074411519000094],\n\t\t\t\t[90.4752315670001, 28.07234446300002],\n\t\t\t\t[90.48566935150171, 28.12465735277827],\n\t\t\t\t[90.51529856561535, 28.154286566892026],\n\t\t\t\t[90.54821991463052, 28.157578701793526],\n\t\t\t\t[90.56797272403975, 28.19050005080878],\n\t\t\t\t[90.59760193815339, 28.200376455513336],\n\t\t\t\t[90.58772553344886, 28.233297804528476],\n\t\t\t\t[90.54821991463052, 28.246466344134532],\n\t\t\t\t[90.50542216091083, 28.249758479036117],\n\t\t\t\t[90.45604013738802, 28.282679828051258],\n\t\t\t\t[90.41653451856979, 28.282679828051258],\n\t\t\t\t[90.38690530445604, 28.2991405025589],\n\t\t\t\t[90.35398395544087, 28.2991405025589],\n\t\t\t\t[90.32950402800009, 28.25579579700006],\n\t\t\t\t[90.29147017500009, 28.261351014000084],\n\t\t\t\t[90.2618041781983, 28.2991405025589],\n\t\t\t\t[90.2618041781983, 28.335353986475624],\n\t\t\t\t[90.22559069428155, 28.358398930786237],\n\t\t\t\t[90.1992536150695, 28.34852252608168],\n\t\t\t\t[90.1762086707588, 28.325477581771068],\n\t\t\t\t[90.15316372644816, 28.322185446869483],\n\t\t\t\t[90.12353451233452, 28.335353986475624],\n\t\t\t\t[90.07086035391018, 28.34523039118018],\n\t\t\t\t[89.99045495700005, 28.32062388100009],\n\t\t\t\t[89.97159305900004, 28.318040060000087],\n\t\t\t\t[89.95252445500006, 28.30824737600004],\n\t\t\t\t[89.91613001353875, 28.31560117706651],\n\t\t\t\t[89.88131433100011, 28.29752451600011],\n\t\t\t\t[89.87361454300003, 28.300599263000052],\n\t\t\t\t[89.86291752100004, 28.295793356000033],\n\t\t\t\t[89.85402917500011, 28.28726674400012],\n\t\t\t\t[89.83862959800013, 28.267913921000073],\n\t\t\t\t[89.82974125100003, 28.259154765000076],\n\t\t\t\t[89.79604821800007, 28.240189515000054],\n\t\t\t\t[89.78085534700011, 28.228769023000027],\n\t\t\t\t[89.77362064600004, 28.21277516700009],\n\t\t\t\t[89.75584395400011, 28.184378967000058],\n\t\t\t\t[89.71781010000007, 28.169082744000022],\n\t\t\t\t[89.59781742400008, 28.149807434000067],\n\t\t\t\t[89.57942061400007, 28.144639791000074],\n\t\t\t\t[89.56148889100012, 28.134640401000055],\n\t\t\t\t[89.51503177900008, 28.081904602000023],\n\t\t\t\t[89.49534305900005, 28.06800364200005],\n\t\t\t\t[89.47534428000012, 28.061337382000133],\n\t\t\t\t[89.45880782100011, 28.04779815700006],\n\t\t\t\t[89.44454512600004, 28.031184184000054],\n\t\t\t\t[89.42118737800007, 27.99472646100004],\n\t\t\t\t[89.42098067200004, 27.99472646100004],\n\t\t\t\t[89.41736367800007, 27.988654027000038],\n\t\t\t\t[89.37013106300003, 27.90935699500004],\n\t\t\t\t[89.33602461800007, 27.8690752160001],\n\t\t\t\t[89.29948938000013, 27.844244690000053],\n\t\t\t\t[89.25871667500007, 27.827553203000022],\n\t\t\t\t[89.22492028800008, 27.807812806000058],\n\t\t\t\t[89.21659020133723, 27.77114152368786],\n\t\t\t\t[89.19820315021519, 27.730581852095057],\n\t\t\t\t[89.15602109175876, 27.665686377546805],\n\t\t\t\t[89.1273589238333, 27.627289888438966],\n\t\t\t\t[89.12465494572706, 27.614851589150547],\n\t\t\t\t[89.11948401016275, 27.61820054938572],\n\t\t\t\t[89.10956515172722, 27.62225826420017],\n\t\t\t\t[89.1058645948479, 27.62295211861509],\n\t\t\t\t[89.10235143650146, 27.623610835805025],\n\t\t\t\t[89.09153086366274, 27.62586512181302],\n\t\t\t\t[89.06402857436444, 27.615946263377637],\n\t\t\t\t[89.05095371551772, 27.60828169095022],\n\t\t\t\t[89.0396822854774, 27.594305117700188],\n\t\t\t\t[89.03337028465484, 27.57897597284547],\n\t\t\t\t[89.01623771099366, 27.57581997243416],\n\t\t\t\t[89.00271199494523, 27.560490827579358],\n\t\t\t\t[89.00496628095334, 27.549670254740633],\n\t\t\t\t[88.99279313650976, 27.53749711029714],\n\t\t\t\t[88.97836570605818, 27.53028339507135],\n\t\t\t\t[88.97295541963888, 27.517659393426257],\n\t\t\t\t[88.97520970564693, 27.506838820587532],\n\t\t\t\t[88.98004625332288, 27.497980380569217],\n\t\t\t\t[88.98296649296316, 27.49263177875116],\n\t\t\t\t[88.96620182870481, 27.478030296977792],\n\t\t\t\t[88.95754909876507, 27.456939267749547],\n\t\t\t\t[88.95105955131027, 27.433144260415148],\n\t\t\t\t[88.96401118394226, 27.392923642327176],\n\t\t\t\t[88.98117510746783, 27.35463488984705],\n\t\t\t\t[88.99701872918376, 27.33086945727318],\n\t\t\t\t[88.97193299480028, 27.312385231937938],\n\t\t\t\t[88.95080816584573, 27.32822885365387],\n\t\t\t\t[88.91516001698494, 27.33086945727318],\n\t\t\t\t[88.89233077000011, 27.315543111000082],\n\t\t\t\t[88.86463220200005, 27.332389628000087],\n\t\t\t\t[88.85202315300006, 27.342363180000078],\n\t\t\t\t[88.8308358160001, 27.36732289600006],\n\t\t\t\t[88.8198287350001, 27.37362742200007],\n\t\t\t\t[88.80820153800005, 27.378381653000062],\n\t\t\t\t[88.79538578300009, 27.385926412000018],\n\t\t\t\t[88.77357832900003, 27.408509013000057],\n\t\t\t\t[88.75978072200007, 27.435070699000065],\n\t\t\t\t[88.75435469600012, 27.464216207000092],\n\t\t\t\t[88.75719689900006, 27.49496368400004],\n\t\t\t\t[88.75755863400008, 27.511448466000033],\n\t\t\t\t[88.74164229300004, 27.531679789000023],\n\t\t\t\t[88.7410221770001, 27.545709941000027],\n\t\t\t\t[88.74815352400003, 27.560127666000042],\n\t\t\t\t[88.76737715600007, 27.586198425000035],\n\t\t\t\t[88.78308679200012, 27.622036031000064],\n\t\t\t\t[88.80566939300007, 27.655108948000063],\n\t\t\t\t[88.85388350400007, 27.843676249000097],\n\t\t\t\t[88.85507206300008, 27.859179179000094],\n\t\t\t\t[88.85155806500012, 27.877162577],\n\t\t\t\t[88.84277307100012, 27.892407125000133],\n\t\t\t\t[88.81889856000004, 27.91519643200003],\n\t\t\t\t[88.81068200700014, 27.927857158000066],\n\t\t\t\t[88.80975183200007, 27.9444969690001],\n\t\t\t\t[88.81967370600006, 27.977337342000013],\n\t\t\t\t[88.81771000200013, 27.99472646100004],\n\t\t\t\t[88.81771000200013, 27.994881490000083],\n\t\t\t\t[88.8175032960001, 27.994881490000083],\n\t\t\t\t[88.80293054200013, 28.011004537000062],\n\t\t\t\t[88.78014123500003, 28.028341980000064],\n\t\t\t\t[88.73564782700004, 28.055265402000074],\n\t\t\t\t[88.7101196700001, 28.061983337000115],\n\t\t\t\t[88.65203536000013, 28.069398906000018],\n\t\t\t\t[88.63167484600007, 28.083351542000017],\n\t\t\t\t[88.61048750800012, 28.105830790000127],\n\t\t\t\t[88.59400272600004, 28.106605937000026],\n\t\t\t\t[88.55281660900005, 28.078054708000067],\n\t\t\t\t[88.53080245000007, 28.0590119430001],\n\t\t\t\t[88.5171598720001, 28.039581604000105],\n\t\t\t\t[88.50207035300008, 28.02888458300002],\n\t\t\t\t[88.47540531400011, 28.036248474000033],\n\t\t\t\t[88.45576827000008, 28.03152008100004],\n\t\t\t\t[88.39990604700012, 27.994881490000083],\n\t\t\t\t[88.39985437100012, 27.99472646100004],\n\t\t\t\t[88.39975101800007, 27.99472646100004],\n\t\t\t\t[88.37877038600004, 27.982634176000047],\n\t\t\t\t[88.19785119700003, 27.95829457600003],\n\t\t\t\t[88.17485518400008, 27.94976796500002],\n\t\t\t\t[88.16296960500006, 27.946899923000032],\n\t\t\t\t[88.15118737800003, 27.947209982000018],\n\t\t\t\t[88.12669274900009, 27.950439759000105],\n\t\t\t\t[88.11573734600012, 27.947261658000045],\n\t\t\t\t[88.09992435700008, 27.928322246000093],\n\t\t\t\t[88.09749556500003, 27.904008484000073],\n\t\t\t\t[88.10488529500003, 27.8797205610001],\n\t\t\t\t[88.11821781400005, 27.860884501000058],\n\t\t\t\t[88.09573856600008, 27.86532867500007],\n\t\t\t\t[88.05279545100012, 27.88651601100004],\n\t\t\t\t[88.02995446800008, 27.893337301000074],\n\t\t\t\t[88.01812056500006, 27.892148743000078],\n\t\t\t\t[87.99181726100005, 27.882640280000075],\n\t\t\t\t[87.9784330650001, 27.880521545000093],\n\t\t\t\t[87.96639245600011, 27.8827436320001],\n\t\t\t\t[87.9452051190001, 27.892303772],\n\t\t\t\t[87.93455977400009, 27.895301006000025],\n\t\t\t\t[87.85611495000006, 27.898608297000024],\n\t\t\t\t[87.83668461200006, 27.908323467000073],\n\t\t\t\t[87.82588423700014, 27.906566467000076],\n\t\t\t\t[87.81415368700004, 27.890960185000054],\n\t\t\t\t[87.79865075700013, 27.863468323000077],\n\t\t\t\t[87.77984053500012, 27.839438782000045],\n\t\t\t\t[87.75637943500004, 27.82037017900005],\n\t\t\t\t[87.72682051600003, 27.807761129000042],\n\t\t\t\t[87.70046553600008, 27.80564239500005],\n\t\t\t\t[87.67852882500011, 27.813351022000077],\n\t\t\t\t[87.65995121300006, 27.819879252000035],\n\t\t\t\t[87.63607670100009, 27.82365163200005],\n\t\t\t\t[87.62109053600011, 27.81954335600004],\n\t\t\t\t[87.58998132300013, 27.804608867000084],\n\t\t\t\t[87.57334151200013, 27.805022278000095],\n\t\t\t\t[87.56507328300006, 27.810861715000087],\n\t\t\t\t[87.55980228700014, 27.819078268000013],\n\t\t\t\t[87.5559782310001, 27.827088115],\n\t\t\t\t[87.55132735200004, 27.83189402300009],\n\t\t\t\t[87.53158695500008, 27.836803284000027],\n\t\t\t\t[87.51453373200013, 27.835201314000088],\n\t\t\t\t[87.47556970200009, 27.82670054200007],\n\t\t\t\t[87.38678959100014, 27.804402161000027],\n\t\t\t\t[87.36911625200014, 27.803937073],\n\t\t\t\t[87.36911625200014, 27.819078268000013],\n\t\t\t\t[87.38069177200009, 27.83582143200006],\n\t\t\t\t[87.38534265100003, 27.849412334000064],\n\t\t\t\t[87.36384525500011, 27.855251770000038],\n\t\t\t\t[87.33583662900008, 27.846363424000018],\n\t\t\t\t[87.31392582200004, 27.8285867310001],\n\t\t\t\t[87.29051639800008, 27.816081035000096],\n\t\t\t\t[87.23289717600005, 27.829723613000013],\n\t\t\t\t[87.18199589000011, 27.82450429300009],\n\t\t\t\t[87.15579593900009, 27.825796204000042],\n\t\t\t\t[87.11652185100013, 27.84458058700004],\n\t\t\t\t[87.06200321500012, 27.9084268190001],\n\t\t\t\t[87.03053226700013, 27.938089091000037],\n\t\t\t\t[87.0056759040001, 27.951499126],\n\t\t\t\t[86.98872603400008, 27.952480978000054],\n\t\t\t\t[86.98209267100003, 27.950674405000072],\n\t\t\t\t[86.97022587100014, 27.947442525],\n\t\t\t\t[86.94035689300006, 27.943101705000018],\n\t\t\t\t[86.91472538200009, 27.945117086000053],\n\t\t\t\t[86.89307295800012, 27.954186300000018],\n\t\t\t\t[86.87689823400012, 27.970645243],\n\t\t\t\t[86.86816491700012, 27.99472646100004],\n\t\t\t\t[86.86816491700012, 27.994881490000083],\n\t\t\t\t[86.84046634900011, 28.014776917000077],\n\t\t\t\t[86.76997969600006, 28.01208974300006],\n\t\t\t\t[86.73980065900014, 28.02149485300002],\n\t\t\t\t[86.7322042240001, 28.03495656300008],\n\t\t\t\t[86.73597660400003, 28.064851380000093],\n\t\t\t\t[86.73173913600004, 28.07691782600007],\n\t\t\t\t[86.71768314700006, 28.088260804000058],\n\t\t\t\t[86.69964807100013, 28.098751119],\n\t\t\t\t[86.68006270300003, 28.105727437],\n\t\t\t\t[86.66197595200009, 28.106838481000082],\n\t\t\t\t[86.64947025600003, 28.101179911000074],\n\t\t\t\t[86.62714603700005, 28.08348073300006],\n\t\t\t\t[86.6123149010001, 28.080276794000085],\n\t\t\t\t[86.59686364700013, 28.086503805000078],\n\t\t\t\t[86.58311771700005, 28.098027649000088],\n\t\t\t\t[86.56952681500007, 28.106605937000026],\n\t\t\t\t[86.55355879700005, 28.104151306000077],\n\t\t\t\t[86.54415368700006, 28.09301503600004],\n\t\t\t\t[86.54125980600003, 28.078209738000012],\n\t\t\t\t[86.54074304200009, 28.06216420600005],\n\t\t\t\t[86.53836592600004, 28.047178040000077],\n\t\t\t\t[86.5309245200001, 28.03369049100003],\n\t\t\t\t[86.52229455600013, 28.02371694000003],\n\t\t\t\t[86.51619673700009, 28.012244771],\n\t\t\t\t[86.51645511900006, 27.99472646100004],\n\t\t\t\t[86.51676433500006, 27.971432200000024],\n\t\t\t\t[86.51046065300005, 27.952429301000038],\n\t\t\t\t[86.49692142700007, 27.937882385000094],\n\t\t\t\t[86.47547570800003, 27.927598775],\n\t\t\t\t[86.43883711700005, 27.91085561100006],\n\t\t\t\t[86.42529789200012, 27.909925435],\n\t\t\t\t[86.40571252400008, 27.917005107000122],\n\t\t\t\t[86.37196781400013, 27.941964824000095],\n\t\t\t\t[86.36297611500004, 27.946098938000105],\n\t\t\t\t[86.35367435800003, 27.944807028000085],\n\t\t\t\t[86.34561283400006, 27.940931295000027],\n\t\t\t\t[86.33755131000004, 27.93803741500004],\n\t\t\t\t[86.3277327880001, 27.93969106100009],\n\t\t\t\t[86.31822432400003, 27.945788880000052],\n\t\t\t\t[86.29465987200012, 27.97237640400006],\n\t\t\t\t[86.27807173600007, 27.98369354300003],\n\t\t\t\t[86.25900313300014, 27.987646790000028],\n\t\t\t\t[86.23853926600003, 27.98955881800005],\n\t\t\t\t[86.21838545700007, 27.99472646100004],\n\t\t\t\t[86.21792037000006, 27.99493316600008],\n\t\t\t\t[86.21776534000003, 27.99498484300001],\n\t\t\t\t[86.20303755700013, 28.00258127900007],\n\t\t\t\t[86.19600956200009, 28.01457021100002],\n\t\t\t\t[86.18913659700013, 28.043612366000033],\n\t\t\t\t[86.18185022000006, 28.054877828000073],\n\t\t\t\t[86.17446049000006, 28.062448425000028],\n\t\t\t\t[86.17223840400004, 28.071827698000092],\n\t\t\t\t[86.18076501500008, 28.088751729000094],\n\t\t\t\t[86.18717289300008, 28.108698832000087],\n\t\t\t\t[86.18603601100011, 28.133529358000047],\n\t\t\t\t[86.17601078300004, 28.15301137300004],\n\t\t\t\t[86.1559603280001, 28.156525371],\n\t\t\t\t[86.06873050900003, 28.07676279700003],\n\t\t\t\t[86.07017745000013, 28.066711731000098],\n\t\t\t\t[86.0815462650001, 28.0516997270001],\n\t\t\t\t[86.08469852700006, 28.04387074800009],\n\t\t\t\t[86.08392338100003, 28.038548076000055],\n\t\t\t\t[86.07953088400006, 28.021649882000062],\n\t\t\t\t[86.07953088400006, 28.013329977000083],\n\t\t\t\t[86.07761885600013, 28.00694793700005],\n\t\t\t\t[86.07916914900005, 28.001134339000075],\n\t\t\t\t[86.08929772900012, 27.994881490000083],\n\t\t\t\t[86.08940108300004, 27.994881490000083],\n\t\t\t\t[86.08940108300004, 27.99472646100004],\n\t\t\t\t[86.09813439900012, 27.985631409000078],\n\t\t\t\t[86.09803104700006, 27.977518209000053],\n\t\t\t\t[86.09508549000009, 27.968888245000116],\n\t\t\t\t[86.09560225500013, 27.957855326000114],\n\t\t\t\t[86.10056319200004, 27.950233053000048],\n\t\t\t\t[86.10717777500008, 27.9442385870001],\n\t\t\t\t[86.11224206500003, 27.93726226900013],\n\t\t\t\t[86.11286218300012, 27.926797791000084],\n\t\t\t\t[86.10717777500008, 27.922844544],\n\t\t\t\t[86.07565515100009, 27.894784241000067],\n\t\t\t\t[86.06170251500009, 27.889048157000033],\n\t\t\t\t[86.05459969400005, 27.888013072],\n\t\t\t\t[86.0514189050001, 27.887549540000023],\n\t\t\t\t[86.02645918800005, 27.88992665600007],\n\t\t\t\t[85.98026045800009, 27.88517242400006],\n\t\t\t\t[85.9626904700001, 27.891373596000065],\n\t\t\t\t[85.95121830300008, 27.916229961000013],\n\t\t\t\t[85.95183841900007, 27.936797181000102],\n\t\t\t\t[85.95628259300008, 27.956873474000062],\n\t\t\t\t[85.95659265100005, 27.9762262980001],\n\t\t\t\t[85.94398360200012, 27.99472646100004],\n\t\t\t\t[85.9089469810001, 28.022425029000075],\n\t\t\t\t[85.8983016360001, 28.03601593000006],\n\t\t\t\t[85.89044681900009, 28.059192810000056],\n\t\t\t\t[85.88982670100012, 28.071259257000023],\n\t\t\t\t[85.89106693500014, 28.080896912000057],\n\t\t\t\t[85.88910323100004, 28.090276184000103],\n\t\t\t\t[85.87173995000006, 28.110920919000094],\n\t\t\t\t[85.86703739500012, 28.13293508],\n\t\t\t\t[85.86336836800012, 28.14334788000012],\n\t\t\t\t[85.84827885000004, 28.158928325000048],\n\t\t\t\t[85.82688480700011, 28.170478007],\n\t\t\t\t[85.78275313300003, 28.188099671000074],\n\t\t\t\t[85.7566048590001, 28.203240866],\n\t\t\t\t[85.7344873450001, 28.221534323000057],\n\t\t\t\t[85.71557377100004, 28.243367615000082],\n\t\t\t\t[85.69976078300004, 28.269102478],\n\t\t\t\t[85.6980037840001, 28.31344085700003],\n\t\t\t\t[85.69293949400003, 28.33522247300006],\n\t\t\t\t[85.67914188700007, 28.332897034000027],\n\t\t\t\t[85.67598962500011, 28.32473215800009],\n\t\t\t\t[85.67619633000004, 28.315120341000082],\n\t\t\t\t[85.67505944900006, 28.306387024000017],\n\t\t\t\t[85.66813480600007, 28.30054758800013],\n\t\t\t\t[85.6469474700001, 28.293700460000068],\n\t\t\t\t[85.6390926520001, 28.287886862000093],\n\t\t\t\t[85.61180749500005, 28.251144918000094],\n\t\t\t\t[85.59894006300004, 28.25083486000004],\n\t\t\t\t[85.58550419100004, 28.263185526000072],\n\t\t\t\t[85.56529870600014, 28.27538116400008],\n\t\t\t\t[85.54369795800005, 28.28039377900005],\n\t\t\t\t[85.5206502690001, 28.282925924000054],\n\t\t\t\t[85.49755090300005, 28.282615865000068],\n\t\t\t\t[85.47569177300011, 28.279101868000012],\n\t\t\t\t[85.4466496170001, 28.29215016700006],\n\t\t\t\t[85.43156010000007, 28.297059428000082],\n\t\t\t\t[85.41523034700003, 28.2964393110001],\n\t\t\t\t[85.40138106300009, 28.288791199000045],\n\t\t\t\t[85.37781661000008, 28.265976054000035],\n\t\t\t\t[85.36257206200014, 28.259671529000016],\n\t\t\t\t[85.3453638100001, 28.261247660000052],\n\t\t\t\t[85.33482181800008, 28.268689067000068],\n\t\t\t\t[85.32572676600006, 28.277396546000134],\n\t\t\t\t[85.31260095200008, 28.282770895000098],\n\t\t\t\t[85.30102543200013, 28.28106557200003],\n\t\t\t\t[85.27312015800004, 28.269825949000094],\n\t\t\t\t[85.25958093300005, 28.266932068000088],\n\t\t\t\t[85.24340620900006, 28.267913921000073],\n\t\t\t\t[85.22392419500005, 28.2716863000001],\n\t\t\t\t[85.20573409100012, 28.278275045000086],\n\t\t\t\t[85.1735913490001, 28.30431996600005],\n\t\t\t\t[85.15457442200005, 28.30085764600001],\n\t\t\t\t[85.13416223200011, 28.291969300000105],\n\t\t\t\t[85.10940922100008, 28.292253520000074],\n\t\t\t\t[85.08739506100005, 28.304113261000097],\n\t\t\t\t[85.08021203600003, 28.318789368000083],\n\t\t\t\t[85.0818671020001, 28.331702005000082],\n\t\t\t\t[85.08568973800004, 28.361525777000097],\n\t\t\t\t[85.08568973800004, 28.38100779200009],\n\t\t\t\t[85.07757653800013, 28.435681457000058],\n\t\t\t\t[85.08367435700006, 28.44552581800012],\n\t\t\t\t[85.10946089700008, 28.45929758700005],\n\t\t\t\t[85.11555871600012, 28.4727334600001],\n\t\t\t\t[85.11566206800006, 28.491492005000012],\n\t\t\t\t[85.11721236200009, 28.4973314410001],\n\t\t\t\t[85.1231551510001, 28.504591980000058],\n\t\t\t\t[85.14036340400008, 28.510922343000075],\n\t\t\t\t[85.14764978100004, 28.515831604000127],\n\t\t\t\t[85.15374760000003, 28.52490081800009],\n\t\t\t\t[85.1569515380001, 28.533143209000045],\n\t\t\t\t[85.16801029400006, 28.583191833000043],\n\t\t\t\t[85.16098230000006, 28.59499989900003],\n\t\t\t\t[85.11188968900012, 28.6088233440001],\n\t\t\t\t[85.07504439300004, 28.6316643280001],\n\t\t\t\t[85.05494226100006, 28.63869232200001],\n\t\t\t\t[85.03210127800014, 28.634067281000043],\n\t\t\t\t[85.02527998900013, 28.62840871200011],\n\t\t\t\t[85.01876875900012, 28.619856262],\n\t\t\t\t[85.00915694200012, 28.60254465700008],\n\t\t\t\t[85.00249068200003, 28.594431458000074],\n\t\t\t\t[84.99406742400004, 28.5908141070001],\n\t\t\t\t[84.9847656660001, 28.588592021000082],\n\t\t\t\t[84.95494836400007, 28.57430348700011],\n\t\t\t\t[84.94895389800007, 28.568283183000077],\n\t\t\t\t[84.93644820200007, 28.544770406000097],\n\t\t\t\t[84.92849003100008, 28.53846588100008],\n\t\t\t\t[84.91872318600014, 28.535675354000105],\n\t\t\t\t[84.90787113500011, 28.537018942000074],\n\t\t\t\t[84.89143802900003, 28.541773173000067],\n\t\t\t\t[84.87929406700005, 28.54363352400007],\n\t\t\t\t[84.82394860900007, 28.540532939000045],\n\t\t\t\t[84.81195967600013, 28.54197987900004],\n\t\t\t\t[84.79914392100005, 28.54663075800009],\n\t\t\t\t[84.78178064000014, 28.558903910000126],\n\t\t\t\t[84.75563236500005, 28.58541392100004],\n\t\t\t\t[84.73661543800006, 28.594173075000114],\n\t\t\t\t[84.69083011900005, 28.596136780000037],\n\t\t\t\t[84.67775598100008, 28.604405009000075],\n\t\t\t\t[84.68297530100011, 28.65075876900009],\n\t\t\t\t[84.67114139800009, 28.658949483000114],\n\t\t\t\t[84.65227950100007, 28.66238596600006],\n\t\t\t\t[84.63264245600004, 28.668793844000092],\n\t\t\t\t[84.62582116700008, 28.676080221000078],\n\t\t\t\t[84.61620935100007, 28.693650207000033],\n\t\t\t\t[84.6072176510001, 28.69819773400006],\n\t\t\t\t[84.55182051600008, 28.7063884490001],\n\t\t\t\t[84.53197676600007, 28.712692973000017],\n\t\t\t\t[84.51564701300003, 28.721400452000083],\n\t\t\t\t[84.49859379100008, 28.72786000600003],\n\t\t\t\t[84.4757528080001, 28.727291565000073],\n\t\t\t\t[84.45084476800014, 28.73388031000006],\n\t\t\t\t[84.43782230700009, 28.753336487000055],\n\t\t\t\t[84.42273278800008, 28.79917348300002],\n\t\t\t\t[84.41430953000008, 28.808268534],\n\t\t\t\t[84.39307051600014, 28.82433990500006],\n\t\t\t\t[84.37658573500005, 28.848834534],\n\t\t\t\t[84.36630212500006, 28.85674102800006],\n\t\t\t\t[84.3540031330001, 28.861288554000097],\n\t\t\t\t[84.28599694900004, 28.873742574000076],\n\t\t\t\t[84.23514733900004, 28.900020040000115],\n\t\t\t\t[84.2252905100001, 28.914115306],\n\t\t\t\t[84.20672530100012, 28.940663554000068],\n\t\t\t\t[84.2314266360001, 29.025981343000026],\n\t\t\t\t[84.22057458500007, 29.03890045200005],\n\t\t\t\t[84.19819869000008, 29.045308329000093],\n\t\t\t\t[84.17546106000009, 29.05740061400006],\n\t\t\t\t[84.16972497600005, 29.08892323900004],\n\t\t\t\t[84.16621097900008, 29.098457540000126],\n\t\t\t\t[84.16011316000004, 29.105485535000028],\n\t\t\t\t[84.13799564600004, 29.124657492000054],\n\t\t\t\t[84.13225956200006, 29.143803609000045],\n\t\t\t\t[84.14171634900003, 29.160262554000028],\n\t\t\t\t[84.15520389800008, 29.175946351000093],\n\t\t\t\t[84.16166345300007, 29.19253448500008],\n\t\t\t\t[84.15546228100004, 29.206642151000025],\n\t\t\t\t[84.14197473200011, 29.208269959000077],\n\t\t\t\t[84.12600671400008, 29.2062545780001],\n\t\t\t\t[84.11236413600005, 29.20909678200009],\n\t\t\t\t[84.10533614100007, 29.219922994000044],\n\t\t\t\t[84.09913496900009, 29.247001445000095],\n\t\t\t\t[84.08972985800011, 29.256613261],\n\t\t\t\t[84.07205651900011, 29.256974996000096],\n\t\t\t\t[84.05303959200006, 29.25036041300011],\n\t\t\t\t[84.0352112220001, 29.24762156200005],\n\t\t\t\t[84.02151696800007, 29.25976552300007],\n\t\t\t\t[84.01252526900004, 29.270204163000088],\n\t\t\t\t[84.00089807100005, 29.27252960200012],\n\t\t\t\t[83.98823734600012, 29.269532369],\n\t\t\t\t[83.97583500200005, 29.263744609000028],\n\t\t\t\t[83.97325118100008, 29.277025452000046],\n\t\t\t\t[83.96725671400003, 29.284699402000044],\n\t\t\t\t[83.9579549560001, 29.289040222000025],\n\t\t\t\t[83.94555261300013, 29.291830750000074],\n\t\t\t\t[83.93315026800008, 29.291779073000058],\n\t\t\t\t[83.91439172400004, 29.28940195700001],\n\t\t\t\t[83.88343754100003, 29.282012228],\n\t\t\t\t[83.87739139900003, 29.276767070000076],\n\t\t\t\t[83.86886478700012, 29.263434550000042],\n\t\t\t\t[83.86163008600005, 29.26020477300007],\n\t\t\t\t[83.83785892700007, 29.254003601000093],\n\t\t\t\t[83.79321049000004, 29.23475413100006],\n\t\t\t\t[83.77062788900008, 29.232247824000083],\n\t\t\t\t[83.74535811400006, 29.234469910000072],\n\t\t\t\t[83.71972660300008, 29.233591411000035],\n\t\t\t\t[83.6954903570001, 29.22617584200013],\n\t\t\t\t[83.67507816600005, 29.208760885000103],\n\t\t\t\t[83.66774011200005, 29.192327780000127],\n\t\t\t\t[83.66339929300005, 29.174809469000067],\n\t\t\t\t[83.65600956200007, 29.160779318000053],\n\t\t\t\t[83.65499238900003, 29.160413575000078],\n\t\t\t\t[83.63926639800013, 29.15475901300003],\n\t\t\t\t[83.62443526200008, 29.155456645000115],\n\t\t\t\t[83.58381758700006, 29.16214874300003],\n\t\t\t\t[83.57203536000003, 29.168401592000023],\n\t\t\t\t[83.56139001500003, 29.176230570000072],\n\t\t\t\t[83.53596521000003, 29.179227804000064],\n\t\t\t\t[83.52371789500012, 29.183594462000073],\n\t\t\t\t[83.51705163600008, 29.19170766200007],\n\t\t\t\t[83.51457116700004, 29.201810405000018],\n\t\t\t\t[83.51250410900008, 29.223488668000087],\n\t\t\t\t[83.50299564700009, 29.26103159600011],\n\t\t\t\t[83.49338383000008, 29.276146952000104],\n\t\t\t\t[83.47581384300008, 29.28692148900005],\n\t\t\t\t[83.44821862800012, 29.29676584900001],\n\t\t\t\t[83.4372115480001, 29.30524078400002],\n\t\t\t\t[83.42816817300007, 29.33345611600008],\n\t\t\t\t[83.41778120900005, 29.340897523000095],\n\t\t\t\t[83.40501713000009, 29.3464785770001],\n\t\t\t\t[83.39313155100012, 29.35624542300006],\n\t\t\t\t[83.38827396600004, 29.37022389700006],\n\t\t\t\t[83.38941084800013, 29.382445374],\n\t\t\t\t[83.38724043800005, 29.393504130000096],\n\t\t\t\t[83.35700972500013, 29.415363261000024],\n\t\t\t\t[83.35520105000012, 29.427972310000072],\n\t\t\t\t[83.35778487100004, 29.44275177100006],\n\t\t\t\t[83.35520105000012, 29.460735168000056],\n\t\t\t\t[83.32796757000006, 29.48502309200005],\n\t\t\t\t[83.26394047000014, 29.47300832100008],\n\t\t\t\t[83.24719730600009, 29.49473826100011],\n\t\t\t\t[83.24874760000012, 29.506572164000104],\n\t\t\t\t[83.25401859500005, 29.513290101000038],\n\t\t\t\t[83.25990970900006, 29.518767802000028],\n\t\t\t\t[83.26332035400009, 29.52708770800008],\n\t\t\t\t[83.26083988500011, 29.542048035000064],\n\t\t\t\t[83.25257165600004, 29.555199687000126],\n\t\t\t\t[83.22931726100012, 29.575947774000056],\n\t\t\t\t[83.22187585400007, 29.579823507000114],\n\t\t\t\t[83.2049259850001, 29.58491363600011],\n\t\t\t\t[83.19717452000009, 29.58909942700005],\n\t\t\t\t[83.19448734600007, 29.59364695300006],\n\t\t\t\t[83.19086999600006, 29.606901957000062],\n\t\t\t\t[83.18725264500011, 29.612095439000072],\n\t\t\t\t[83.17355839100009, 29.62126800500009],\n\t\t\t\t[83.16208622200014, 29.625169576000033],\n\t\t\t\t[83.15004561400008, 29.62563466400006],\n\t\t\t\t[83.12668786600005, 29.623412577000053],\n\t\t\t\t[83.10028120900006, 29.617676493000104],\n\t\t\t\t[83.09335656700006, 29.615144349000033],\n\t\t\t\t[83.08844730700014, 29.604421488000085],\n\t\t\t\t[83.08555342600005, 29.59039133800009],\n\t\t\t\t[83.07955896000004, 29.579642640000074],\n\t\t\t\t[83.06493453000007, 29.57878997800013],\n\t\t\t\t[83.05449589000011, 29.586050517],\n\t\t\t\t[83.04090498800014, 29.610286764000094],\n\t\t\t\t[83.03289514200009, 29.620467021000067],\n\t\t\t\t[82.9758960370001, 29.664030253000092],\n\t\t\t\t[82.96432051600004, 29.665890605000087],\n\t\t\t\t[82.9420996500001, 29.6629450490001],\n\t\t\t\t[82.93191939300004, 29.664185283000037],\n\t\t\t\t[82.92370284000009, 29.669662984000027],\n\t\t\t\t[82.90913008600012, 29.684623312],\n\t\t\t\t[82.89972497600007, 29.688421529000024],\n\t\t\t\t[82.88008793200004, 29.68110931400004],\n\t\t\t\t[82.8574536540001, 29.666200664000073],\n\t\t\t\t[82.83657637600004, 29.65979278600004],\n\t\t\t\t[82.82236535700014, 29.67795705200008],\n\t\t\t\t[82.81554406800012, 29.690126851000073],\n\t\t\t\t[82.80515710500009, 29.695966289000083],\n\t\t\t\t[82.7930648200001, 29.699506124000052],\n\t\t\t\t[82.78107588700004, 29.705113017000073],\n\t\t\t\t[82.77012048400007, 29.71415639300001],\n\t\t\t\t[82.75151696800003, 29.73932281500005],\n\t\t\t\t[82.69095218900003, 29.780741476000017],\n\t\t\t\t[82.68175378500007, 29.797717183000103],\n\t\t\t\t[82.68464766500006, 29.809706116000072],\n\t\t\t\t[82.68919519100007, 29.81957631400006],\n\t\t\t\t[82.68898848500004, 29.827741191000072],\n\t\t\t\t[82.67730961100006, 29.834407451000075],\n\t\t\t\t[82.66697432500013, 29.83502756700007],\n\t\t\t\t[82.64640710500004, 29.82934316100001],\n\t\t\t\t[82.63586511200009, 29.829033101000036],\n\t\t\t\t[82.61850183100006, 29.839833476000067],\n\t\t\t\t[82.54181400500005, 29.923239238000022],\n\t\t\t\t[82.52424401900004, 29.932385966000098],\n\t\t\t\t[82.47582320100008, 29.945511780000075],\n\t\t\t\t[82.4570646570001, 29.9540900680001],\n\t\t\t\t[82.43892622900006, 29.965768942000082],\n\t\t\t\t[82.4228548590001, 29.979669902000055],\n\t\t\t\t[82.40978072100006, 29.99460439100001],\n\t\t\t\t[82.39443282100007, 30.00313100200013],\n\t\t\t\t[82.37913659700013, 30.00323435500006],\n\t\t\t\t[82.36373702000003, 30.001167298],\n\t\t\t\t[82.34730391400007, 30.003441061000032],\n\t\t\t\t[82.33908736200004, 30.009228821000093],\n\t\t\t\t[82.32715010600009, 30.025713603000057],\n\t\t\t\t[82.31888187700014, 30.031811422000132],\n\t\t\t\t[82.2965059820001, 30.036824036],\n\t\t\t\t[82.27599043800012, 30.036927388000024],\n\t\t\t\t[82.25573327600011, 30.039666240000074],\n\t\t\t\t[82.21067142800007, 30.064419251000075],\n\t\t\t\t[82.19217126400014, 30.06147369400007],\n\t\t\t\t[82.17423954300006, 30.055479228000067],\n\t\t\t\t[82.15382735200012, 30.058166402],\n\t\t\t\t[82.14452559400007, 30.069431865000055],\n\t\t\t\t[82.13522383600014, 30.08974070200007],\n\t\t\t\t[82.12871260600008, 30.110773010000074],\n\t\t\t\t[82.1275757250001, 30.124363912000078],\n\t\t\t\t[82.15098514800013, 30.162242737000057],\n\t\t\t\t[82.15568770300013, 30.181363017000066],\n\t\t\t\t[82.14039148000006, 30.194023743000102],\n\t\t\t\t[82.11424320500004, 30.202188619000125],\n\t\t\t\t[82.09589807100008, 30.21345408200007],\n\t\t\t\t[82.0849943450001, 30.2308173630001],\n\t\t\t\t[82.08210046400012, 30.25732737300011],\n\t\t\t\t[82.09321089700006, 30.31473988900011],\n\t\t\t\t[82.08876672400004, 30.330087789000075],\n\t\t\t\t[82.07321211800013, 30.337219137000105],\n\t\t\t\t[82.04985437000005, 30.339234518000055],\n\t\t\t\t[82.00763472500006, 30.336805726000094],\n\t\t\t\t[81.99817793800014, 30.33406687500006],\n\t\t\t\t[81.98846276900008, 30.329777731],\n\t\t\t\t[81.97885095300006, 30.326832174000074],\n\t\t\t\t[81.96903243000008, 30.32827911400007],\n\t\t\t\t[81.96210778900013, 30.333653463000033],\n\t\t\t\t[81.95011885600007, 30.348381246000045],\n\t\t\t\t[81.94123050900004, 30.353962301000067],\n\t\t\t\t[81.92149011200007, 30.35737294600007],\n\t\t\t\t[81.88717696200007, 30.35499583000005],\n\t\t\t\t[81.84438887500005, 30.371170553000027],\n\t\t\t\t[81.82278812700008, 30.368173320000025],\n\t\t\t\t[81.80149743700008, 30.36130035400005],\n\t\t\t\t[81.77901818800007, 30.35804473900008],\n\t\t\t\t[81.7573657640001, 30.362902324000075],\n\t\t\t\t[81.63571944200004, 30.410961406000055],\n\t\t\t\t[81.61401534000004, 30.416904195000072],\n\t\t\t\t[81.59158776800007, 30.414268697000054],\n\t\t\t\t[81.58507653800007, 30.408119202000066],\n\t\t\t\t[81.58197595200005, 30.399437561000113],\n\t\t\t\t[81.57670495600007, 30.390962626000103],\n\t\t\t\t[81.56326908400007, 30.385588277000053],\n\t\t\t\t[81.54425215700007, 30.38264272100004],\n\t\t\t\t[81.53681075100008, 30.378560283000056],\n\t\t\t\t[81.53195316600005, 30.370343730000016],\n\t\t\t\t[81.52068770400007, 30.33194814000008],\n\t\t\t\t[81.5093705650001, 30.328382467000026],\n\t\t\t\t[81.48306726100009, 30.331896464000053],\n\t\t\t\t[81.46281010000007, 30.34135325100003],\n\t\t\t\t[81.4261198320001, 30.372514140000092],\n\t\t\t\t[81.40741296400012, 30.37918040000001],\n\t\t\t\t[81.38751753800011, 30.37390940300007],\n\t\t\t\t[81.3848820400001, 30.360938619000066],\n\t\t\t\t[81.38725915500004, 30.345125631000045],\n\t\t\t\t[81.38214318800004, 30.3312763470001],\n\t\t\t\t[81.37154952000009, 30.3169102990001],\n\t\t\t\t[81.36803552300012, 30.30104563400009],\n\t\t\t\t[81.36901737500006, 30.26606068900007],\n\t\t\t\t[81.3705159910001, 30.257275696000093],\n\t\t\t\t[81.37692386900011, 30.241204325000027],\n\t\t\t\t[81.37785404500005, 30.232626038],\n\t\t\t\t[81.37439172400013, 30.223117574000113],\n\t\t\t\t[81.36183435100014, 30.20477244100003],\n\t\t\t\t[81.35728682500007, 30.173559876000056],\n\t\t\t\t[81.35005212400011, 30.157230123000105],\n\t\t\t\t[81.33826989700003, 30.143535868000086],\n\t\t\t\t[81.3224052330001, 30.133769023000028],\n\t\t\t\t[81.30953780200008, 30.132063701000064],\n\t\t\t\t[81.29325972600009, 30.132838847000087],\n\t\t\t\t[81.27770511900007, 30.131856995000092],\n\t\t\t\t[81.26695642100003, 30.125087382000075],\n\t\t\t\t[81.26633630400005, 30.117749329000063],\n\t\t\t\t[81.27450118000007, 30.10219472300004],\n\t\t\t\t[81.27594812100006, 30.09537343300009],\n\t\t\t\t[81.27202071100004, 30.07992218],\n\t\t\t\t[81.2679026460001, 30.07205300500003],\n\t\t\t\t[81.2668013920001, 30.06994862900008],\n\t\t\t\t[81.25708622300004, 30.063540752000037],\n\t\t\t\t[81.2395162360001, 30.058786520000055],\n\t\t\t\t[81.22571862800004, 30.050466614000086],\n\t\t\t\t[81.22726892100007, 30.022457987000095],\n\t\t\t\t[81.21683028200005, 30.008195292000025],\n\t\t\t\t[81.19450606300006, 30.004474589],\n\t\t\t\t[81.14810062700013, 30.02323313400008],\n\t\t\t\t[81.12458785000007, 30.02276804700007],\n\t\t\t\t[81.09776778200006, 30.01692860900009],\n\t\t\t\t[81.08484867400006, 30.026178690000094],\n\t\t\t\t[81.08445364600004, 30.027875774000094],\n\t\t\t\t[81.07420332800007, 30.071912334000032],\n\t\t\t\t[81.06660689300008, 30.08715688100007],\n\t\t\t\t[81.04366255800005, 30.12022979700005],\n\t\t\t\t[81.0308984780001, 30.152734274000082],\n\t\t\t\t[81.01942631000009, 30.172267965000074],\n\t\t\t\t[81.00650720200008, 30.188907776000107],\n\t\t\t\t[80.99601688700011, 30.19696930000002],\n\t\t\t\t[81.00330326400012, 30.212730611000083],\n\t\t\t\t[80.99627526900008, 30.226889954000043],\n\t\t\t\t[80.97601810700007, 30.255208638000042],\n\t\t\t\t[80.94377201300011, 30.270143128000072],\n\t\t\t\t[80.86698083500005, 30.28848826100007],\n\t\t\t\t[80.78166304500007, 30.320992737],\n\t\t\t\t[80.76719364400003, 30.331431376000026],\n\t\t\t\t[80.75499800600005, 30.345797425000043],\n\t\t\t\t[80.73536096200007, 30.378198547000054],\n\t\t\t\t[80.72306197200004, 30.392047832000102],\n\t\t\t\t[80.69474328600006, 30.41173655200005],\n\t\t\t\t[80.59635136000003, 30.45979563500002],\n\t\t\t\t[80.57526737500012, 30.466255188000062],\n\t\t\t\t[80.55997115100007, 30.465118306000065],\n\t\t\t\t[80.54508833800008, 30.461035869000042],\n\t\t\t\t[80.52514123600008, 30.458607076000092],\n\t\t\t\t[80.5082947190001, 30.46232777900009],\n\t\t\t\t[80.47542850700006, 30.48046620700002],\n\t\t\t\t[80.42499230900006, 30.49782948800005],\n\t\t\t\t[80.32587691200013, 30.54650868700007],\n\t\t\t\t[80.2528064380001, 30.565008851000087],\n\t\t\t\t[80.21621952300006, 30.566817526000094],\n\t\t\t\t[80.17983931500004, 30.559479472000092],\n\t\t\t\t[80.18841760200007, 30.576997783000067],\n\t\t\t\t[80.19782271300005, 30.591363831000066],\n\t\t\t\t[80.20330041600005, 30.60634999600005],\n\t\t\t\t[80.19988977100013, 30.62588368700004],\n\t\t\t\t[80.19058801300008, 30.637975973000025],\n\t\t\t\t[80.17725549300008, 30.649861552000047],\n\t\t\t\t[80.16692020700003, 30.661902161000043],\n\t\t\t\t[80.16661014800007, 30.674407858000038],\n\t\t\t\t[80.1729146730001, 30.67916208900003],\n\t\t\t\t[80.18200972500006, 30.680040589000058],\n\t\t\t\t[80.19172489400012, 30.679678853000055],\n\t\t\t\t[80.19988977100013, 30.68071238200004],\n\t\t\t\t[80.20702111900005, 30.68613840700003],\n\t\t\t\t[80.23141239400007, 30.724947408000062],\n\t\t\t\t[80.22459110500012, 30.734094137000042],\n\t\t\t\t[80.19606571500009, 30.748098450000057],\n\t\t\t\t[80.16929732200009, 30.78525380400005],\n\t\t\t\t[80.15710168400011, 30.793160299000093],\n\t\t\t\t[80.14066858000012, 30.79321197500009],\n\t\t\t\t[80.10924930900006, 30.778122458],\n\t\t\t\t[80.09219608500007, 30.774505107000024],\n\t\t\t\t[80.06253381400006, 30.784788717000097],\n\t\t\t\t[80.04444706200007, 30.80669952400008],\n\t\t\t\t[80.02863407400008, 30.830780742000016],\n\t\t\t\t[80.00558638600012, 30.847265524000093],\n\t\t\t\t[79.93489302600011, 30.872535299000063],\n\t\t\t\t[79.91936951600007, 30.88118194500005],\n\t\t\t\t[79.91463535600008, 30.88381888700009],\n\t\t\t\t[79.90316369700008, 30.89020863900005],\n\t\t\t\t[79.8804260660001, 30.912842916],\n\t\t\t\t[79.86285607900004, 30.941523336],\n\t\t\t\t[79.85035038300003, 30.954494120000035],\n\t\t\t\t[79.83350386600006, 30.96152211500005],\n\t\t\t\t[79.76064009600009, 30.977231751000105],\n\t\t\t\t[79.73903934800012, 30.979247131000065],\n\t\t\t\t[79.68849979700008, 30.96741322900003],\n\t\t\t\t[79.64819217900003, 30.965759583000093],\n\t\t\t\t[79.63031213400006, 30.962503967000103],\n\t\t\t\t[79.58948775300007, 30.94023142500005],\n\t\t\t\t[79.57780887900009, 30.938371074000045],\n\t\t\t\t[79.56592329900008, 30.942453512000057],\n\t\t\t\t[79.54421919800006, 30.947414449000107],\n\t\t\t\t[79.5296464440001, 30.953563945000084],\n\t\t\t\t[79.51269657400007, 30.966172994000104],\n\t\t\t\t[79.4976070560001, 30.981210836000074],\n\t\t\t\t[79.48820194600006, 30.99449167900009],\n\t\t\t\t[79.48685835800006, 31.00022776300004],\n\t\t\t\t[79.4842745360001, 31.005447083000078],\n\t\t\t\t[79.48076053900013, 31.01004628500003],\n\t\t\t\t[79.47641971900003, 31.014025371000102],\n\t\t\t\t[79.46164025900003, 31.02110504200003],\n\t\t\t\t[79.4463440350001, 31.023792216000047],\n\t\t\t\t[79.43073775300013, 31.023172099000092],\n\t\t\t\t[79.414408, 31.02038157100013],\n\t\t\t\t[79.40159224500013, 31.02363718700012],\n\t\t\t\t[79.3949776610001, 31.036711324000052],\n\t\t\t\t[79.38836307800011, 31.069474182000064],\n\t\t\t\t[79.38259259500006, 31.07833466600009],\n\t\t\t\t[79.37234338400009, 31.094072165000043],\n\t\t\t\t[79.3670479880583, 31.111559061766084],\n\t\t\t\t[79.31941711251294, 31.142279974197177],\n\t\t\t\t[79.30216249530298, 31.163450395319558],\n\t\t\t\t[79.30320907773682, 31.183103768324315],\n\t\t\t\t[79.29807839147153, 31.203242202430214],\n\t\t\t\t[79.28832134985049, 31.225473994629226],\n\t\t\t\t[79.2783162706794, 31.240043992036647],\n\t\t\t\t[79.2528602604927, 31.24543676949139],\n\t\t\t\t[79.24843045010522, 31.256703749478504],\n\t\t\t\t[79.26202358591979, 31.27851309060668],\n\t\t\t\t[79.25411000876994, 31.29900573432724],\n\t\t\t\t[79.2392392007286, 31.311723913427898],\n\t\t\t\t[79.23831863759511, 31.3296556045226],\n\t\t\t\t[79.20762798854088, 31.351372703987124],\n\t\t\t\t[79.19244185390846, 31.369789449823315],\n\t\t\t\t[79.17921754805144, 31.393795999286],\n\t\t\t\t[79.15769333967592, 31.414925750622956],\n\t\t\t\t[79.13139720595568, 31.438433157420082],\n\t\t\t\t[79.07799043411131, 31.461664353726974],\n\t\t\t\t[79.07021024772884, 31.461381390199218],\n\t\t\t\t[79.04993667283924, 31.422952683719416],\n\t\t\t\t[79.01552948833853, 31.383397147758455],\n\t\t\t\t[78.98880090300014, 31.34325592100005],\n\t\t\t\t[78.95955204300003, 31.325117493000036],\n\t\t\t\t[78.94028174400734, 31.301576298907094],\n\t\t\t\t[78.92100839989331, 31.269685496828163],\n\t\t\t\t[78.88697183608144, 31.28417089736905],\n\t\t\t\t[78.86198693800009, 31.291476135],\n\t\t\t\t[78.84865441900007, 31.29090769500003],\n\t\t\t\t[78.82198938000005, 31.29369822200009],\n\t\t\t\t[78.79604781100005, 31.288117167000067],\n\t\t\t\t[78.78447229000005, 31.288272197000097],\n\t\t\t\t[78.75315637200003, 31.30196645100004],\n\t\t\t\t[78.74509484900005, 31.308115947000104],\n\t\t\t\t[78.74085738200006, 31.317727763000036],\n\t\t\t\t[78.73848026600012, 31.334987691000023],\n\t\t\t\t[78.74550826100005, 31.373538310000086],\n\t\t\t\t[78.7600810140001, 31.412037252000047],\n\t\t\t\t[78.76256148300007, 31.44511016900013],\n\t\t\t\t[78.73300256300007, 31.467744446000083],\n\t\t\t\t[78.69538212100014, 31.488104961000104],\n\t\t\t\t[78.69951623500003, 31.51001576800006],\n\t\t\t\t[78.79697798700005, 31.578848775000054],\n\t\t\t\t[78.81403120900006, 31.59502349900005],\n\t\t\t\t[78.81888879400009, 31.607374166000014],\n\t\t\t\t[78.79532434100008, 31.633780823000095],\n\t\t\t\t[78.75811731000005, 31.666595358],\n\t\t\t\t[78.73982385300008, 31.666026917000053],\n\t\t\t\t[78.7313489180001, 31.668042298],\n\t\t\t\t[78.72401086500008, 31.67331329300005],\n\t\t\t\t[78.71842981000009, 31.680599671000024],\n\t\t\t\t[78.71047164000004, 31.698169658],\n\t\t\t\t[78.69806929500004, 31.71103709000009],\n\t\t\t\t[78.69321171100006, 31.71853017200003],\n\t\t\t\t[78.69259159400008, 31.728400370000102],\n\t\t\t\t[78.69517541500005, 31.737960511],\n\t\t\t\t[78.69558882600006, 31.746693827000072],\n\t\t\t\t[78.67088749200008, 31.770516663000038],\n\t\t\t\t[78.67409143000003, 31.786949768000014],\n\t\t\t\t[78.7003430580001, 31.821676331000035],\n\t\t\t\t[78.70664758300006, 31.840796611000044],\n\t\t\t\t[78.71419234300004, 31.88301625600012],\n\t\t\t\t[78.72018680900004, 31.902911682000124],\n\t\t\t\t[78.7419942630001, 31.945338033000056],\n\t\t\t\t[78.74457808500011, 31.964199931000067],\n\t\t\t\t[78.73382938700007, 31.984663798000028],\n\t\t\t\t[78.72215051300009, 31.99458567300003],\n\t\t\t\t[78.67832889800007, 32.01675486300006],\n\t\t\t\t[78.64928674300012, 32.036443583],\n\t\t\t\t[78.55182499200004, 32.15039011700007],\n\t\t\t\t[78.53497847500006, 32.18134429900006],\n\t\t\t\t[78.51306766800008, 32.2075700890001],\n\t\t\t\t[78.47648075400014, 32.22441660600008],\n\t\t\t\t[78.46901739200007, 32.226532615000096],\n\t\t\t\t[78.46854076900007, 32.22666774700009],\n\t\t\t\t[78.45798059100014, 32.229661764000085],\n\t\t\t\t[78.45632694500006, 32.24211578400009],\n\t\t\t\t[78.46139123600005, 32.26015085900009],\n\t\t\t\t[78.46273482300012, 32.28180328400008],\n\t\t\t\t[78.43886031100004, 32.37329640700004],\n\t\t\t\t[78.43596643100005, 32.377973125],\n\t\t\t\t[78.43451949100006, 32.38376088500006],\n\t\t\t\t[78.43637984200006, 32.39616322900004],\n\t\t\t\t[78.44144413200013, 32.40494822200013],\n\t\t\t\t[78.44816206900003, 32.41065846800008],\n\t\t\t\t[78.45219283000006, 32.41678212500004],\n\t\t\t\t[78.44878218600013, 32.42678151500006],\n\t\t\t\t[78.40919803900005, 32.4766234340001],\n\t\t\t\t[78.3809827070001, 32.528041484000084],\n\t\t\t\t[78.38480676200004, 32.54754933700006],\n\t\t\t\t[78.40816451000006, 32.55837555],\n\t\t\t\t[78.44754195200011, 32.566256205000045],\n\t\t\t\t[78.58985884700007, 32.569925232000045],\n\t\t\t\t[78.63016646300008, 32.57801259400004],\n\t\t\t\t[78.64773645100007, 32.58597076500011],\n\t\t\t\t[78.66489302600013, 32.59901906300006],\n\t\t\t\t[78.69445194500008, 32.629663188000066],\n\t\t\t\t[78.7132621670001, 32.637518006],\n\t\t\t\t[78.73682661900011, 32.629844056000124],\n\t\t\t\t[78.75098596200013, 32.61279083300009],\n\t\t\t\t[78.74912561100012, 32.5958668010001],\n\t\t\t\t[78.74065067600003, 32.578684387000024],\n\t\t\t\t[78.73496626800011, 32.56064931300004],\n\t\t\t\t[78.73692997300003, 32.54579233800008],\n\t\t\t\t[78.75470666500013, 32.493805847000075],\n\t\t\t\t[78.77144982900012, 32.461663106000046],\n\t\t\t\t[78.85568241400006, 32.40045237300011],\n\t\t\t\t[78.88152063000013, 32.37626780200013],\n\t\t\t\t[78.9112862550001, 32.35474456800007],\n\t\t\t\t[78.94342899600014, 32.346372986000105],\n\t\t\t\t[78.97619185400004, 32.36161753300006],\n\t\t\t\t[78.98983443200012, 32.364098003000024],\n\t\t\t\t[79.01474247300007, 32.373994039000095],\n\t\t\t\t[79.02817834500007, 32.377094626000044],\n\t\t\t\t[79.03965051300008, 32.37598358100006],\n\t\t\t\t[79.0663155520001, 32.37006663100006],\n\t\t\t\t[79.07530725100014, 32.370790100000036],\n\t\t\t\t[79.0917403570001, 32.39055633500003],\n\t\t\t\t[79.10290246600005, 32.449855042000124],\n\t\t\t\t[79.11292769400006, 32.47238596700005],\n\t\t\t\t[79.13287479700011, 32.4854601040001],\n\t\t\t\t[79.16140018800013, 32.496467184],\n\t\t\t\t[79.19116581200012, 32.504270325],\n\t\t\t\t[79.21524703000006, 32.507913513000105],\n\t\t\t\t[79.23560754400012, 32.504296163000035],\n\t\t\t\t[79.28741156145267, 32.53257939116813],\n\t\t\t\t[79.32046626650504, 32.59226722135526],\n\t\t\t\t[79.37947682579494, 32.57644972217696],\n\t\t\t\t[79.40682034478317, 32.52968335070614],\n\t\t\t\t[79.44349727169374, 32.53477259180094],\n\t\t\t\t[79.47211298523796, 32.56547177661887],\n\t\t\t\t[79.51574063362341, 32.608119744630585],\n\t\t\t\t[79.53120131304826, 32.648316794003655],\n\t\t\t\t[79.57617012539868, 32.6706463645242],\n\t\t\t\t[79.62067291506752, 32.72872513425561],\n\t\t\t\t[79.61391341067542, 32.76503545442273],\n\t\t\t\t[79.56409288128151, 32.793927891059354],\n\t\t\t\t[79.4710886681076, 32.908959488689504],\n\t\t\t\t[79.41408948759245, 32.9720529162554],\n\t\t\t\t[79.3784615590933, 32.97888079862581],\n\t\t\t\t[79.33358605900014, 32.99429209500006],\n\t\t\t\t[79.33978723100012, 33.013257345000014],\n\t\t\t\t[79.39927298712544, 33.026877543090805],\n\t\t\t\t[79.38106298759733, 33.06176785943445],\n\t\t\t\t[79.3731702070001, 33.11214019800006],\n\t\t\t\t[79.42347470306436, 33.15782502934888],\n\t\t\t\t[79.45609607657275, 33.25039903388836],\n\t\t\t\t[79.42008441515759, 33.27516911050025],\n\t\t\t\t[79.34030669939472, 33.27513188662732],\n\t\t\t\t[79.26006124250934, 33.29177628972042],\n\t\t\t\t[79.15021349475705, 33.29255492117272],\n\t\t\t\t[79.12503824122189, 33.29020260316764],\n\t\t\t\t[79.09802822725385, 33.28765466454805],\n\t\t\t\t[79.07504815721146, 33.29574255484219],\n\t\t\t\t[79.05327756453967, 33.307872984457326],\n\t\t\t\t[79.02304063027336, 33.31798038693261],\n\t\t\t\t[78.99344870739196, 33.330781826020484],\n\t\t\t\t[78.96498571648198, 33.344254148471954],\n\t\t\t\t[78.91769413200012, 33.386257833000045]\n\t\t\t]\n\t\t]\n\t},\n\t\"india\": {\n\t\t\"stop\": 0.5622801389605236,\n\t\t\"anchor\": [80.10836486026088, 22.5],\n\t\t\"border\": [\n\t\t\t[\n\t\t\t\t[78.79898227941202, 33.5],\n\t\t\t\t[78.80090539600008, 33.494235738],\n\t\t\t\t[78.82426314300005, 33.46105946900006],\n\t\t\t\t[78.91594777500006, 33.387655981000094],\n\t\t\t\t[78.91769413200012, 33.386257833000045],\n\t\t\t\t[78.96498571648198, 33.344254148471954],\n\t\t\t\t[78.99344870739196, 33.330781826020484],\n\t\t\t\t[79.02304063027336, 33.31798038693261],\n\t\t\t\t[79.05327756453967, 33.307872984457326],\n\t\t\t\t[79.07504815721146, 33.29574255484219],\n\t\t\t\t[79.09802822725385, 33.28765466454805],\n\t\t\t\t[79.12503824122189, 33.29020260316764],\n\t\t\t\t[79.15021349475705, 33.29255492117272],\n\t\t\t\t[79.26006124250934, 33.29177628972042],\n\t\t\t\t[79.34030669939472, 33.27513188662732],\n\t\t\t\t[79.42008441515759, 33.27516911050025],\n\t\t\t\t[79.45609607657275, 33.25039903388836],\n\t\t\t\t[79.42347470306436, 33.15782502934888],\n\t\t\t\t[79.3731702070001, 33.11214019800006],\n\t\t\t\t[79.38106298759733, 33.06176785943445],\n\t\t\t\t[79.39927298712544, 33.026877543090805],\n\t\t\t\t[79.33978723100012, 33.013257345000014],\n\t\t\t\t[79.33358605900014, 32.99429209500006],\n\t\t\t\t[79.3784615590933, 32.97888079862581],\n\t\t\t\t[79.41408948759245, 32.9720529162554],\n\t\t\t\t[79.4710886681076, 32.908959488689504],\n\t\t\t\t[79.56409288128151, 32.793927891059354],\n\t\t\t\t[79.61391341067542, 32.76503545442273],\n\t\t\t\t[79.62067291506752, 32.72872513425561],\n\t\t\t\t[79.57617012539868, 32.6706463645242],\n\t\t\t\t[79.53120131304826, 32.648316794003655],\n\t\t\t\t[79.51574063362341, 32.608119744630585],\n\t\t\t\t[79.47211298523796, 32.56547177661887],\n\t\t\t\t[79.44349727169374, 32.53477259180094],\n\t\t\t\t[79.40682034478317, 32.52968335070614],\n\t\t\t\t[79.37947682579494, 32.57644972217696],\n\t\t\t\t[79.32046626650504, 32.59226722135526],\n\t\t\t\t[79.28741156145267, 32.53257939116813],\n\t\t\t\t[79.23560754400012, 32.504296163000035],\n\t\t\t\t[79.21524703000006, 32.507913513000105],\n\t\t\t\t[79.19116581200012, 32.504270325],\n\t\t\t\t[79.16140018800013, 32.496467184],\n\t\t\t\t[79.13287479700011, 32.4854601040001],\n\t\t\t\t[79.11292769400006, 32.47238596700005],\n\t\t\t\t[79.10290246600005, 32.449855042000124],\n\t\t\t\t[79.0917403570001, 32.39055633500003],\n\t\t\t\t[79.07530725100014, 32.370790100000036],\n\t\t\t\t[79.0663155520001, 32.37006663100006],\n\t\t\t\t[79.03965051300008, 32.37598358100006],\n\t\t\t\t[79.02817834500007, 32.377094626000044],\n\t\t\t\t[79.01474247300007, 32.373994039000095],\n\t\t\t\t[78.98983443200012, 32.364098003000024],\n\t\t\t\t[78.97619185400004, 32.36161753300006],\n\t\t\t\t[78.94342899600014, 32.346372986000105],\n\t\t\t\t[78.9112862550001, 32.35474456800007],\n\t\t\t\t[78.88152063000013, 32.37626780200013],\n\t\t\t\t[78.85568241400006, 32.40045237300011],\n\t\t\t\t[78.77144982900012, 32.461663106000046],\n\t\t\t\t[78.75470666500013, 32.493805847000075],\n\t\t\t\t[78.73692997300003, 32.54579233800008],\n\t\t\t\t[78.73496626800011, 32.56064931300004],\n\t\t\t\t[78.74065067600003, 32.578684387000024],\n\t\t\t\t[78.74912561100012, 32.5958668010001],\n\t\t\t\t[78.75098596200013, 32.61279083300009],\n\t\t\t\t[78.73682661900011, 32.629844056000124],\n\t\t\t\t[78.7132621670001, 32.637518006],\n\t\t\t\t[78.69445194500008, 32.629663188000066],\n\t\t\t\t[78.66489302600013, 32.59901906300006],\n\t\t\t\t[78.64773645100007, 32.58597076500011],\n\t\t\t\t[78.63016646300008, 32.57801259400004],\n\t\t\t\t[78.58985884700007, 32.569925232000045],\n\t\t\t\t[78.44754195200011, 32.566256205000045],\n\t\t\t\t[78.40816451000006, 32.55837555],\n\t\t\t\t[78.38480676200004, 32.54754933700006],\n\t\t\t\t[78.3809827070001, 32.528041484000084],\n\t\t\t\t[78.40919803900005, 32.4766234340001],\n\t\t\t\t[78.44878218600013, 32.42678151500006],\n\t\t\t\t[78.45219283000006, 32.41678212500004],\n\t\t\t\t[78.44816206900003, 32.41065846800008],\n\t\t\t\t[78.44144413200013, 32.40494822200013],\n\t\t\t\t[78.43637984200006, 32.39616322900004],\n\t\t\t\t[78.43451949100006, 32.38376088500006],\n\t\t\t\t[78.43596643100005, 32.377973125],\n\t\t\t\t[78.43886031100004, 32.37329640700004],\n\t\t\t\t[78.46273482300012, 32.28180328400008],\n\t\t\t\t[78.46139123600005, 32.26015085900009],\n\t\t\t\t[78.45632694500006, 32.24211578400009],\n\t\t\t\t[78.45798059100014, 32.229661764000085],\n\t\t\t\t[78.46854076900007, 32.22666774700009],\n\t\t\t\t[78.46901739200007, 32.226532615000096],\n\t\t\t\t[78.47648075400014, 32.22441660600008],\n\t\t\t\t[78.51306766800008, 32.2075700890001],\n\t\t\t\t[78.53497847500006, 32.18134429900006],\n\t\t\t\t[78.55182499200004, 32.15039011700007],\n\t\t\t\t[78.64928674300012, 32.036443583],\n\t\t\t\t[78.67832889800007, 32.01675486300006],\n\t\t\t\t[78.72215051300009, 31.99458567300003],\n\t\t\t\t[78.73382938700007, 31.984663798000028],\n\t\t\t\t[78.74457808500011, 31.964199931000067],\n\t\t\t\t[78.7419942630001, 31.945338033000056],\n\t\t\t\t[78.72018680900004, 31.902911682000124],\n\t\t\t\t[78.71419234300004, 31.88301625600012],\n\t\t\t\t[78.70664758300006, 31.840796611000044],\n\t\t\t\t[78.7003430580001, 31.821676331000035],\n\t\t\t\t[78.67409143000003, 31.786949768000014],\n\t\t\t\t[78.67088749200008, 31.770516663000038],\n\t\t\t\t[78.69558882600006, 31.746693827000072],\n\t\t\t\t[78.69517541500005, 31.737960511],\n\t\t\t\t[78.69259159400008, 31.728400370000102],\n\t\t\t\t[78.69321171100006, 31.71853017200003],\n\t\t\t\t[78.69806929500004, 31.71103709000009],\n\t\t\t\t[78.71047164000004, 31.698169658],\n\t\t\t\t[78.71842981000009, 31.680599671000024],\n\t\t\t\t[78.72401086500008, 31.67331329300005],\n\t\t\t\t[78.7313489180001, 31.668042298],\n\t\t\t\t[78.73982385300008, 31.666026917000053],\n\t\t\t\t[78.75811731000005, 31.666595358],\n\t\t\t\t[78.79532434100008, 31.633780823000095],\n\t\t\t\t[78.81888879400009, 31.607374166000014],\n\t\t\t\t[78.81403120900006, 31.59502349900005],\n\t\t\t\t[78.79697798700005, 31.578848775000054],\n\t\t\t\t[78.69951623500003, 31.51001576800006],\n\t\t\t\t[78.69538212100014, 31.488104961000104],\n\t\t\t\t[78.73300256300007, 31.467744446000083],\n\t\t\t\t[78.76256148300007, 31.44511016900013],\n\t\t\t\t[78.7600810140001, 31.412037252000047],\n\t\t\t\t[78.74550826100005, 31.373538310000086],\n\t\t\t\t[78.73848026600012, 31.334987691000023],\n\t\t\t\t[78.74085738200006, 31.317727763000036],\n\t\t\t\t[78.74509484900005, 31.308115947000104],\n\t\t\t\t[78.75315637200003, 31.30196645100004],\n\t\t\t\t[78.78447229000005, 31.288272197000097],\n\t\t\t\t[78.79604781100005, 31.288117167000067],\n\t\t\t\t[78.82198938000005, 31.29369822200009],\n\t\t\t\t[78.84865441900007, 31.29090769500003],\n\t\t\t\t[78.86198693800009, 31.291476135],\n\t\t\t\t[78.88697183608144, 31.28417089736905],\n\t\t\t\t[78.92100839989331, 31.269685496828163],\n\t\t\t\t[78.94028174400734, 31.301576298907094],\n\t\t\t\t[78.95955204300003, 31.325117493000036],\n\t\t\t\t[78.98880090300014, 31.34325592100005],\n\t\t\t\t[79.01552948833853, 31.383397147758455],\n\t\t\t\t[79.04993667283924, 31.422952683719416],\n\t\t\t\t[79.07021024772884, 31.461381390199218],\n\t\t\t\t[79.07799043411131, 31.461664353726974],\n\t\t\t\t[79.13139720595568, 31.438433157420082],\n\t\t\t\t[79.15769333967592, 31.414925750622956],\n\t\t\t\t[79.17921754805144, 31.393795999286],\n\t\t\t\t[79.19244185390846, 31.369789449823315],\n\t\t\t\t[79.20762798854088, 31.351372703987124],\n\t\t\t\t[79.23831863759511, 31.3296556045226],\n\t\t\t\t[79.2392392007286, 31.311723913427898],\n\t\t\t\t[79.25411000876994, 31.29900573432724],\n\t\t\t\t[79.26202358591979, 31.27851309060668],\n\t\t\t\t[79.24843045010522, 31.256703749478504],\n\t\t\t\t[79.2528602604927, 31.24543676949139],\n\t\t\t\t[79.2783162706794, 31.240043992036647],\n\t\t\t\t[79.28832134985049, 31.225473994629226],\n\t\t\t\t[79.29807839147153, 31.203242202430214],\n\t\t\t\t[79.30320907773682, 31.183103768324315],\n\t\t\t\t[79.30216249530298, 31.163450395319558],\n\t\t\t\t[79.31941711251294, 31.142279974197177],\n\t\t\t\t[79.3670479880583, 31.111559061766084],\n\t\t\t\t[79.37234338400009, 31.094072165000043],\n\t\t\t\t[79.38259259500006, 31.07833466600009],\n\t\t\t\t[79.38836307800011, 31.069474182000064],\n\t\t\t\t[79.3949776610001, 31.036711324000052],\n\t\t\t\t[79.40159224500013, 31.02363718700012],\n\t\t\t\t[79.414408, 31.02038157100013],\n\t\t\t\t[79.43073775300013, 31.023172099000092],\n\t\t\t\t[79.4463440350001, 31.023792216000047],\n\t\t\t\t[79.46164025900003, 31.02110504200003],\n\t\t\t\t[79.47641971900003, 31.014025371000102],\n\t\t\t\t[79.48076053900013, 31.01004628500003],\n\t\t\t\t[79.4842745360001, 31.005447083000078],\n\t\t\t\t[79.48685835800006, 31.00022776300004],\n\t\t\t\t[79.48820194600006, 30.99449167900009],\n\t\t\t\t[79.4976070560001, 30.981210836000074],\n\t\t\t\t[79.51269657400007, 30.966172994000104],\n\t\t\t\t[79.5296464440001, 30.953563945000084],\n\t\t\t\t[79.54421919800006, 30.947414449000107],\n\t\t\t\t[79.56592329900008, 30.942453512000057],\n\t\t\t\t[79.57780887900009, 30.938371074000045],\n\t\t\t\t[79.58948775300007, 30.94023142500005],\n\t\t\t\t[79.63031213400006, 30.962503967000103],\n\t\t\t\t[79.64819217900003, 30.965759583000093],\n\t\t\t\t[79.68849979700008, 30.96741322900003],\n\t\t\t\t[79.73903934800012, 30.979247131000065],\n\t\t\t\t[79.76064009600009, 30.977231751000105],\n\t\t\t\t[79.83350386600006, 30.96152211500005],\n\t\t\t\t[79.85035038300003, 30.954494120000035],\n\t\t\t\t[79.86285607900004, 30.941523336],\n\t\t\t\t[79.8804260660001, 30.912842916],\n\t\t\t\t[79.90316369700008, 30.89020863900005],\n\t\t\t\t[79.91463535600008, 30.88381888700009],\n\t\t\t\t[79.91936951600007, 30.88118194500005],\n\t\t\t\t[79.93489302600011, 30.872535299000063],\n\t\t\t\t[80.00558638600012, 30.847265524000093],\n\t\t\t\t[80.02863407400008, 30.830780742000016],\n\t\t\t\t[80.04444706200007, 30.80669952400008],\n\t\t\t\t[80.06253381400006, 30.784788717000097],\n\t\t\t\t[80.09219608500007, 30.774505107000024],\n\t\t\t\t[80.10924930900006, 30.778122458],\n\t\t\t\t[80.14066858000012, 30.79321197500009],\n\t\t\t\t[80.15710168400011, 30.793160299000093],\n\t\t\t\t[80.16929732200009, 30.78525380400005],\n\t\t\t\t[80.19606571500009, 30.748098450000057],\n\t\t\t\t[80.22459110500012, 30.734094137000042],\n\t\t\t\t[80.23141239400007, 30.724947408000062],\n\t\t\t\t[80.20702111900005, 30.68613840700003],\n\t\t\t\t[80.19988977100013, 30.68071238200004],\n\t\t\t\t[80.19172489400012, 30.679678853000055],\n\t\t\t\t[80.18200972500006, 30.680040589000058],\n\t\t\t\t[80.1729146730001, 30.67916208900003],\n\t\t\t\t[80.16661014800007, 30.674407858000038],\n\t\t\t\t[80.16692020700003, 30.661902161000043],\n\t\t\t\t[80.17725549300008, 30.649861552000047],\n\t\t\t\t[80.19058801300008, 30.637975973000025],\n\t\t\t\t[80.19988977100013, 30.62588368700004],\n\t\t\t\t[80.20330041600005, 30.60634999600005],\n\t\t\t\t[80.19782271300005, 30.591363831000066],\n\t\t\t\t[80.18841760200007, 30.576997783000067],\n\t\t\t\t[80.17983931500004, 30.559479472000092],\n\t\t\t\t[80.21621952300006, 30.566817526000094],\n\t\t\t\t[80.2528064380001, 30.565008851000087],\n\t\t\t\t[80.32587691200013, 30.54650868700007],\n\t\t\t\t[80.42499230900006, 30.49782948800005],\n\t\t\t\t[80.47542850700006, 30.48046620700002],\n\t\t\t\t[80.5082947190001, 30.46232777900009],\n\t\t\t\t[80.52514123600008, 30.458607076000092],\n\t\t\t\t[80.54508833800008, 30.461035869000042],\n\t\t\t\t[80.55997115100007, 30.465118306000065],\n\t\t\t\t[80.57526737500012, 30.466255188000062],\n\t\t\t\t[80.59635136000003, 30.45979563500002],\n\t\t\t\t[80.69474328600006, 30.41173655200005],\n\t\t\t\t[80.72306197200004, 30.392047832000102],\n\t\t\t\t[80.73536096200007, 30.378198547000054],\n\t\t\t\t[80.75499800600005, 30.345797425000043],\n\t\t\t\t[80.76719364400003, 30.331431376000026],\n\t\t\t\t[80.78166304500007, 30.320992737],\n\t\t\t\t[80.86698083500005, 30.28848826100007],\n\t\t\t\t[80.94377201300011, 30.270143128000072],\n\t\t\t\t[80.97601810700007, 30.255208638000042],\n\t\t\t\t[80.99627526900008, 30.226889954000043],\n\t\t\t\t[81.00330326400012, 30.212730611000083],\n\t\t\t\t[80.99601688700011, 30.19696930000002],\n\t\t\t\t[80.98816225269584, 30.196555926350566],\n\t\t\t\t[80.92082703591576, 30.176660408536822],\n\t\t\t\t[80.903309336412, 30.180432806924035],\n\t\t\t\t[80.89364690080846, 30.198104359137524],\n\t\t\t\t[80.8838787660946, 30.210405146915726],\n\t\t\t\t[80.88368373459112, 30.210280032524576],\n\t\t\t\t[80.8679110110001, 30.200173238000062],\n\t\t\t\t[80.85039270000004, 30.181931458000022],\n\t\t\t\t[80.83644006400004, 30.170045879000085],\n\t\t\t\t[80.84966923100006, 30.143380840000034],\n\t\t\t\t[80.82982548000007, 30.11712921200011],\n\t\t\t\t[80.76967411300012, 30.077286682000093],\n\t\t\t\t[80.75572147700012, 30.06457428000003],\n\t\t\t\t[80.72574914600011, 30.02276804700007],\n\t\t\t\t[80.71582727100008, 30.013311259000105],\n\t\t\t\t[80.68017053200003, 29.99207224500013],\n\t\t\t\t[80.65412561000005, 29.970574849000073],\n\t\t\t\t[80.64141320800007, 29.96344350200006],\n\t\t\t\t[80.62229292800009, 29.958172506000025],\n\t\t\t\t[80.58622277800009, 29.95414174500003],\n\t\t\t\t[80.57133996600004, 29.946855367000055],\n\t\t\t\t[80.56286503100006, 29.92969879200008],\n\t\t\t\t[80.5495325120001, 29.893680319000097],\n\t\t\t\t[80.52731164500005, 29.86241607700002],\n\t\t\t\t[80.47615197800008, 29.806140442000114],\n\t\t\t\t[80.45486128700009, 29.79058583600009],\n\t\t\t\t[80.39522668500007, 29.776581523000075],\n\t\t\t\t[80.36897505700006, 29.757926330000103],\n\t\t\t\t[80.35429895100009, 29.730279440000103],\n\t\t\t\t[80.35440230300009, 29.704880473000102],\n\t\t\t\t[80.36391076700005, 29.679714050000072],\n\t\t\t\t[80.37755334500008, 29.652945659000082],\n\t\t\t\t[80.38675175000009, 29.626823222],\n\t\t\t\t[80.38520145600006, 29.604834900000114],\n\t\t\t\t[80.37331587800003, 29.58419016500001],\n\t\t\t\t[80.35078495300013, 29.562072652],\n\t\t\t\t[80.3451005450001, 29.558351949000084],\n\t\t\t\t[80.33269820200007, 29.552460836000094],\n\t\t\t\t[80.32722050000012, 29.548585103000036],\n\t\t\t\t[80.32360314900012, 29.541660462000053],\n\t\t\t\t[80.3250500900001, 29.535510966000075],\n\t\t\t\t[80.32763391200012, 29.529929911000053],\n\t\t\t\t[80.32722050000012, 29.524839783000075],\n\t\t\t\t[80.3200891520001, 29.515822245000024],\n\t\t\t\t[80.31151086400013, 29.508122457000027],\n\t\t\t\t[80.29146040900008, 29.49473826100011],\n\t\t\t\t[80.29115035000012, 29.494609070000067],\n\t\t\t\t[80.28205529800005, 29.48429962200005],\n\t\t\t\t[80.27306359800008, 29.47866689100003],\n\t\t\t\t[80.26624231000005, 29.47212982200007],\n\t\t\t\t[80.26345178200006, 29.459236552000064],\n\t\t\t\t[80.25745731700005, 29.450063986000075],\n\t\t\t\t[80.22831180800006, 29.441718242],\n\t\t\t\t[80.21766646400005, 29.434638570000075],\n\t\t\t\t[80.21373905400009, 29.416887716000062],\n\t\t\t\t[80.22097375500005, 29.4001187140001],\n\t\t\t\t[80.24216109200012, 29.367407532000087],\n\t\t\t\t[80.24949914600006, 29.326996562000105],\n\t\t\t\t[80.25497684700008, 29.316635437000016],\n\t\t\t\t[80.26355513600004, 29.315317688000064],\n\t\t\t\t[80.27275354000011, 29.315705261000048],\n\t\t\t\t[80.28009159300012, 29.310150045000043],\n\t\t\t\t[80.28277876900012, 29.29131398500003],\n\t\t\t\t[80.27874800600006, 29.26808542900001],\n\t\t\t\t[80.25818078600014, 29.202456360000085],\n\t\t\t\t[80.24867232300005, 29.204394226000105],\n\t\t\t\t[80.23606327400006, 29.213075867000057],\n\t\t\t\t[80.21880334400004, 29.21108632400002],\n\t\t\t\t[80.21373905400009, 29.196565246],\n\t\t\t\t[80.23048221800013, 29.154733174000015],\n\t\t\t\t[80.23306604000004, 29.139307760000023],\n\t\t\t\t[80.22066369600003, 29.12607859300003],\n\t\t\t\t[80.20144006400005, 29.121169332000093],\n\t\t\t\t[80.18056278500006, 29.12132436100005],\n\t\t\t\t[80.16350956300005, 29.1233655810001],\n\t\t\t\t[80.13260705600004, 29.11021392800002],\n\t\t\t\t[80.11307336500005, 29.072205913000104],\n\t\t\t\t[80.10470178300005, 29.027609151000078],\n\t\t\t\t[80.10790572100012, 28.99476877900007],\n\t\t\t\t[80.10790572100012, 28.99458791100001],\n\t\t\t\t[80.09943078600008, 28.977276306000093],\n\t\t\t\t[80.08516809100013, 28.967483623000035],\n\t\t\t\t[80.06842492700008, 28.959938864],\n\t\t\t\t[80.05292199700006, 28.94911265000006],\n\t\t\t\t[80.04051965400004, 28.932808737000116],\n\t\t\t\t[80.03390507000012, 28.915936381000037],\n\t\t\t\t[80.03111454300006, 28.897797953000108],\n\t\t\t\t[80.03028772000005, 28.877669983000132],\n\t\t\t\t[80.0363855390001, 28.837026469000094],\n\t\t\t\t[80.05478234800006, 28.824184876000103],\n\t\t\t\t[80.07305357600006, 28.820924647000098],\n\t\t\t\t[80.08186079900014, 28.819353129],\n\t\t\t\t[80.11421024600014, 28.80258412700003],\n\t\t\t\t[80.14759322100008, 28.763310038000057],\n\t\t\t\t[80.16206262200012, 28.753284811000057],\n\t\t\t\t[80.18118290200005, 28.74729034500011],\n\t\t\t\t[80.21642622900009, 28.74194183400006],\n\t\t\t\t[80.23327274600007, 28.732717591000053],\n\t\t\t\t[80.23895715300011, 28.726258037],\n\t\t\t\t[80.24939579300008, 28.71021250500003],\n\t\t\t\t[80.25704390500005, 28.7027452600001],\n\t\t\t\t[80.26520878100007, 28.69928293800008],\n\t\t\t\t[80.28339888500011, 28.6953555300001],\n\t\t\t\t[80.29104699700008, 28.689671123000053],\n\t\t\t\t[80.31833215400007, 28.64011342400009],\n\t\t\t\t[80.32970096800005, 28.627478537000073],\n\t\t\t\t[80.34975142400003, 28.620217998000086],\n\t\t\t\t[80.3690784100001, 28.622646789000058],\n\t\t\t\t[80.38830204300012, 28.627245993000102],\n\t\t\t\t[80.40835249900005, 28.626341655000047],\n\t\t\t\t[80.42654260300009, 28.616807353000056],\n\t\t\t\t[80.46881392500006, 28.571848857000035],\n\t\t\t\t[80.48845096900004, 28.562443746],\n\t\t\t\t[80.49341190600006, 28.575647074000088],\n\t\t\t\t[80.48493697100008, 28.63928660100008],\n\t\t\t\t[80.4876241450001, 28.65646901500004],\n\t\t\t\t[80.49754602100006, 28.670137431000043],\n\t\t\t\t[80.51759647600005, 28.680033468000133],\n\t\t\t\t[80.53444380100007, 28.679555368000095],\n\t\t\t\t[80.55583703600013, 28.67894826200005],\n\t\t\t\t[80.55904097500007, 28.67303131200005],\n\t\t\t\t[80.55738732900005, 28.664349671000068],\n\t\t\t\t[80.55687056500011, 28.655022075000048],\n\t\t\t\t[80.56358850100014, 28.647038066000064],\n\t\t\t\t[80.58136519400006, 28.638950704000067],\n\t\t\t\t[80.59852176900012, 28.633783061000074],\n\t\t\t\t[80.6356254480001, 28.627866109000067],\n\t\t\t\t[80.64833785000008, 28.61975291000006],\n\t\t\t\t[80.66818160000014, 28.586344097000094],\n\t\t\t\t[80.6786202400001, 28.57471689800012],\n\t\t\t\t[80.69577681500004, 28.567508036000063],\n\t\t\t\t[80.72709273300006, 28.559679057000054],\n\t\t\t\t[80.74352583900003, 28.549963887],\n\t\t\t\t[80.78166304500007, 28.514746399000032],\n\t\t\t\t[80.79840620900012, 28.505703024000084],\n\t\t\t\t[80.8170097260001, 28.502550761000023],\n\t\t\t\t[80.85798913600013, 28.502447409000084],\n\t\t\t\t[80.87225183100009, 28.496866353000073],\n\t\t\t\t[80.88036503100011, 28.481880189],\n\t\t\t\t[80.88186364800004, 28.46684234700011],\n\t\t\t\t[80.88666955600013, 28.452786357],\n\t\t\t\t[80.90527307200006, 28.44084910100004],\n\t\t\t\t[80.92134444200013, 28.436198222000073],\n\t\t\t\t[80.94118819200014, 28.432684225000045],\n\t\t\t\t[80.9605151780001, 28.432270814000034],\n\t\t\t\t[80.97601810700007, 28.43692169200007],\n\t\t\t\t[80.9878003340001, 28.430978902000064],\n\t\t\t\t[80.99131433200006, 28.420256043000066],\n\t\t\t\t[80.99317468300006, 28.407827861000087],\n\t\t\t\t[81.00040938300003, 28.397001649000046],\n\t\t\t\t[81.04706637000004, 28.389087804],\n\t\t\t\t[81.14634362800007, 28.3722486380001],\n\t\t\t\t[81.16970137600003, 28.361319072000057],\n\t\t\t\t[81.19037194900005, 28.33811635300013],\n\t\t\t\t[81.21073246300006, 28.27863678000007],\n\t\t\t\t[81.22432336400004, 28.25078318300011],\n\t\t\t\t[81.28235599800013, 28.191587830000017],\n\t\t\t\t[81.2959469000001, 28.167454936000055],\n\t\t\t\t[81.2807540280001, 28.161977234000076],\n\t\t\t\t[81.27677494300008, 28.153786520000054],\n\t\t\t\t[81.28307946800004, 28.146086731000068],\n\t\t\t\t[81.29940922000009, 28.1425210580001],\n\t\t\t\t[81.29620528100008, 28.128310038000038],\n\t\t\t\t[81.30705733200006, 28.1238141890001],\n\t\t\t\t[81.32369714400005, 28.12624298100006],\n\t\t\t\t[81.3381148690001, 28.132728373000035],\n\t\t\t\t[81.34726159700006, 28.144433086],\n\t\t\t\t[81.35144738800011, 28.156809591000084],\n\t\t\t\t[81.35790694200006, 28.165982157000073],\n\t\t\t\t[81.37320316600011, 28.167842509000067],\n\t\t\t\t[81.39604414900003, 28.16063364700001],\n\t\t\t\t[81.41733483900009, 28.147016907000122],\n\t\t\t\t[81.43526656100005, 28.12978281600003],\n\t\t\t\t[81.4482373460001, 28.111411845000035],\n\t\t\t\t[81.4529399010001, 28.097045797000035],\n\t\t\t\t[81.45402510600007, 28.086607157000103],\n\t\t\t\t[81.45821089700013, 28.077279562000072],\n\t\t\t\t[81.47345544400014, 28.066401672000026],\n\t\t\t\t[81.56192549700006, 28.025990703000033],\n\t\t\t\t[81.58218265800008, 28.013278300000067],\n\t\t\t\t[81.59510176600008, 27.994881490000083],\n\t\t\t\t[81.59536014800005, 27.994778138000058],\n\t\t\t\t[81.61504886900013, 27.98123891300007],\n\t\t\t\t[81.66543339000003, 27.97080027300005],\n\t\t\t\t[81.6889461670001, 27.96320383700008],\n\t\t\t\t[81.71039188600014, 27.9475200400001],\n\t\t\t\t[81.75013106300014, 27.909667054000025],\n\t\t\t\t[81.80015384900008, 27.88408722000007],\n\t\t\t\t[81.82785241700003, 27.86563873300007],\n\t\t\t\t[81.85565433700009, 27.850936788000055],\n\t\t\t\t[81.88319787600005, 27.84905059900005],\n\t\t\t\t[81.90609053500009, 27.863106588000065],\n\t\t\t\t[81.94639815300013, 27.905352072000042],\n\t\t\t\t[81.97590539600009, 27.91695343000002],\n\t\t\t\t[82.0272200930001, 27.912405904000067],\n\t\t\t\t[82.05021249900011, 27.90558612200006],\n\t\t\t\t[82.05161136900006, 27.90517120300011],\n\t\t\t\t[82.07166182500009, 27.890030009],\n\t\t\t\t[82.09036869300007, 27.87233083100007],\n\t\t\t\t[82.10742191600008, 27.863571675000102],\n\t\t\t\t[82.15103682400007, 27.84827545200004],\n\t\t\t\t[82.27040938300007, 27.760477193],\n\t\t\t\t[82.34792403200004, 27.726009013000024],\n\t\t\t\t[82.40192590400011, 27.67717478400006],\n\t\t\t\t[82.44068322800007, 27.666426086000044],\n\t\t\t\t[82.52615604700009, 27.67521108000004],\n\t\t\t\t[82.65214318800008, 27.704149883000085],\n\t\t\t\t[82.67389143300011, 27.696458430000078],\n\t\t\t\t[82.6796867270001, 27.694408875000036],\n\t\t\t\t[82.69705000800008, 27.669397481000047],\n\t\t\t\t[82.70924564600011, 27.630924377],\n\t\t\t\t[82.71885746300012, 27.556122742000056],\n\t\t\t\t[82.7297095130001, 27.518166402000062],\n\t\t\t\t[82.75213708500007, 27.49496368400004],\n\t\t\t\t[82.87626387600011, 27.487548116000127],\n\t\t\t\t[82.90127526900011, 27.48036509200007],\n\t\t\t\t[82.94716394100004, 27.457317403000033],\n\t\t\t\t[83.01046757100005, 27.443390604000044],\n\t\t\t\t[83.13278568600009, 27.444217428000073],\n\t\t\t\t[83.16963098200011, 27.431194967000025],\n\t\t\t\t[83.2192403570001, 27.393781230000045],\n\t\t\t\t[83.23159102400007, 27.381223856000034],\n\t\t\t\t[83.24311486900007, 27.36215525300007],\n\t\t\t\t[83.2494193930001, 27.348099263000037],\n\t\t\t\t[83.25949629800004, 27.338125713000025],\n\t\t\t\t[83.28244063400007, 27.330942688000093],\n\t\t\t\t[83.30486820500005, 27.33192454100005],\n\t\t\t\t[83.32435022000004, 27.341691386000022],\n\t\t\t\t[83.34114506000003, 27.35693593300006],\n\t\t\t\t[83.3627458090001, 27.38561635400005],\n\t\t\t\t[83.36956709800012, 27.398173726000053],\n\t\t\t\t[83.37096236200011, 27.41021433500002],\n\t\t\t\t[83.35582116800009, 27.42866282200005],\n\t\t\t\t[83.35385746300005, 27.440290019000102],\n\t\t\t\t[83.35592452000003, 27.45248565700011],\n\t\t\t\t[83.36098881100008, 27.462200826000057],\n\t\t\t\t[83.38703373200008, 27.470469056000084],\n\t\t\t\t[83.48098148600008, 27.469745585000098],\n\t\t\t\t[83.59043217000004, 27.456619771000035],\n\t\t\t\t[83.66339929300005, 27.432280172000034],\n\t\t\t\t[83.80199548400003, 27.365927633000084],\n\t\t\t\t[83.84798750900012, 27.35104482000004],\n\t\t\t\t[83.85334011200007, 27.346194023000052],\n\t\t\t\t[83.8546020920001, 27.345050354000122],\n\t\t\t\t[83.86173343900003, 27.354507142000088],\n\t\t\t\t[83.86752120000006, 27.358382873000053],\n\t\t\t\t[83.87739139900003, 27.361741842000058],\n\t\t\t\t[83.87764978000007, 27.36990671900007],\n\t\t\t\t[83.8736706950001, 27.380086975000026],\n\t\t\t\t[83.87119022600012, 27.389440410000063],\n\t\t\t\t[83.8427165120001, 27.418069153000047],\n\t\t\t\t[83.83408654800013, 27.43403717000008],\n\t\t\t\t[83.85351688700013, 27.440961813000072],\n\t\t\t\t[83.89987064700011, 27.44385569200007],\n\t\t\t\t[83.92204311000006, 27.449695761],\n\t\t\t\t[83.92302168800012, 27.449953511000032],\n\t\t\t\t[83.93594079600012, 27.446077780000067],\n\t\t\t\t[83.97583500200005, 27.439721578000032],\n\t\t\t\t[84.00766768400013, 27.440806783000127],\n\t\t\t\t[84.02890669800007, 27.453725891000047],\n\t\t\t\t[84.07960127800004, 27.509536438000012],\n\t\t\t\t[84.0995483800001, 27.51687449100011],\n\t\t\t\t[84.11717004400009, 27.51328297900004],\n\t\t\t\t[84.12156254100006, 27.49496368400004],\n\t\t\t\t[84.1309676510001, 27.486411235000034],\n\t\t\t\t[84.14171634900003, 27.480752666000072],\n\t\t\t\t[84.16574589100009, 27.472174378000048],\n\t\t\t\t[84.17509932500008, 27.46297597300007],\n\t\t\t\t[84.18584802300012, 27.43863637400004],\n\t\t\t\t[84.1952531340001, 27.43605255100003],\n\t\t\t\t[84.22553552300008, 27.440393372000116],\n\t\t\t\t[84.23902307100008, 27.43114329100011],\n\t\t\t\t[84.24889327000005, 27.412436422000027],\n\t\t\t\t[84.26770349200007, 27.388561910000035],\n\t\t\t\t[84.28940759300008, 27.376107890000057],\n\t\t\t\t[84.5770386150001, 27.329030660000072],\n\t\t\t\t[84.60654585800012, 27.310478821000018],\n\t\t\t\t[84.63191898600013, 27.277044169000035],\n\t\t\t\t[84.64819706300005, 27.240715637000065],\n\t\t\t\t[84.65765384900004, 27.203405253000128],\n\t\t\t\t[84.65982426000011, 27.165113017000024],\n\t\t\t\t[84.65439823400004, 27.12537384100004],\n\t\t\t\t[84.64452803500006, 27.103721415000038],\n\t\t\t\t[84.63036869400008, 27.08082875600003],\n\t\t\t\t[84.6214803470001, 27.057987773000022],\n\t\t\t\t[84.62726810700008, 27.036490377000078],\n\t\t\t\t[84.64023889200007, 27.02837717700008],\n\t\t\t\t[84.7606966560001, 26.999024963000082],\n\t\t\t\t[84.77196211800009, 26.999179993000055],\n\t\t\t\t[84.78550134300013, 27.008481751000076],\n\t\t\t\t[84.80193444900004, 27.013752747000083],\n\t\t\t\t[84.81748905400013, 27.01060048400005],\n\t\t\t\t[84.82813440000012, 26.994942526000088],\n\t\t\t\t[84.82828942900005, 26.994839172000056],\n\t\t\t\t[84.85175052900007, 26.982126770000022],\n\t\t\t\t[84.90156661000009, 26.967192281000038],\n\t\t\t\t[84.92404585800011, 26.95566843700003],\n\t\t\t\t[84.93856693500004, 26.936599834000035],\n\t\t\t\t[84.94425134300008, 26.915722554000055],\n\t\t\t\t[84.95272627800011, 26.897635803000057],\n\t\t\t\t[84.97577396700007, 26.886887105000127],\n\t\t\t\t[84.98817631000003, 26.883786520000072],\n\t\t\t\t[85.00083703600006, 26.882236227000064],\n\t\t\t\t[85.01804528800005, 26.874433086000053],\n\t\t\t\t[85.01685673100013, 26.859240214000025],\n\t\t\t\t[85.01856205200005, 26.84580434200008],\n\t\t\t\t[85.0439868580001, 26.843737284],\n\t\t\t\t[85.10021081500008, 26.863529358000093],\n\t\t\t\t[85.12284509300008, 26.865699768000084],\n\t\t\t\t[85.16201582800005, 26.851023662000088],\n\t\t\t\t[85.16552982600012, 26.82079294900008],\n\t\t\t\t[85.16568485500005, 26.786273092],\n\t\t\t\t[85.1949337160001, 26.75888458300004],\n\t\t\t\t[85.28727950000007, 26.736973776000085],\n\t\t\t\t[85.30236901900008, 26.73733551],\n\t\t\t\t[85.33704390500003, 26.746792298000074],\n\t\t\t\t[85.35321862800009, 26.757592672],\n\t\t\t\t[85.35535245800008, 26.759912352000086],\n\t\t\t\t[85.36923832200006, 26.77500762900003],\n\t\t\t\t[85.38587813300006, 26.788443502000078],\n\t\t\t\t[85.4031897380001, 26.787616679000067],\n\t\t\t\t[85.42153487200005, 26.782655742000102],\n\t\t\t\t[85.43962162300011, 26.787720032],\n\t\t\t\t[85.47569177300011, 26.805238343000056],\n\t\t\t\t[85.51946171000009, 26.8264256800001],\n\t\t\t\t[85.59857832800009, 26.854382630000103],\n\t\t\t\t[85.60937870300012, 26.851023662000088],\n\t\t\t\t[85.6877718500001, 26.811852926000043],\n\t\t\t\t[85.70182784000013, 26.7966083780001],\n\t\t\t\t[85.70963098200014, 26.762450256000122],\n\t\t\t\t[85.70224125100003, 26.68844960600002],\n\t\t\t\t[85.71288659700014, 26.65320627900003],\n\t\t\t\t[85.72704593900005, 26.637599996000105],\n\t\t\t\t[85.78099613500012, 26.599204407000073],\n\t\t\t\t[85.7899878340001, 26.597033997000082],\n\t\t\t\t[85.80006473800012, 26.600703023000065],\n\t\t\t\t[85.80972823100007, 26.603028463],\n\t\t\t\t[85.81763472500006, 26.596723938000096],\n\t\t\t\t[85.81954675300011, 26.588300680000103],\n\t\t\t\t[85.81975345900008, 26.579515687000097],\n\t\t\t\t[85.82161381000009, 26.571712545000096],\n\t\t\t\t[85.82853845200003, 26.566131490000075],\n\t\t\t\t[85.84476485200008, 26.568508606000123],\n\t\t\t\t[85.86636560100004, 26.579929098000022],\n\t\t\t\t[85.93468184400007, 26.632897441000026],\n\t\t\t\t[85.95214847900013, 26.6420441690001],\n\t\t\t\t[85.97571293100003, 26.644369609000037],\n\t\t\t\t[86.01136967000014, 26.65444651300008],\n\t\t\t\t[86.04170373500006, 26.645454814000047],\n\t\t\t\t[86.11069177300004, 26.60674916600003],\n\t\t\t\t[86.11585941500005, 26.602563375000088],\n\t\t\t\t[86.12206058800012, 26.600289612000054],\n\t\t\t\t[86.14479821800006, 26.601529847000094],\n\t\t\t\t[86.14635461800009, 26.60135577600009],\n\t\t\t\t[86.15265303600012, 26.600651347000067],\n\t\t\t\t[86.16779423000014, 26.596620585000053],\n\t\t\t\t[86.17446049000006, 26.593313293000065],\n\t\t\t\t[86.17926639900003, 26.58861073800007],\n\t\t\t\t[86.18536421800007, 26.584424947000045],\n\t\t\t\t[86.19585453300004, 26.582667949000083],\n\t\t\t\t[86.20288252800009, 26.584579977000075],\n\t\t\t\t[86.22515507100013, 26.597395732000066],\n\t\t\t\t[86.26308557100003, 26.60907460600005],\n\t\t\t\t[86.28442793800014, 26.612020162000036],\n\t\t\t\t[86.30137780800004, 26.609022930000023],\n\t\t\t\t[86.30861250800007, 26.60214996300006],\n\t\t\t\t[86.30902592000012, 26.58799062200002],\n\t\t\t\t[86.31600223800012, 26.58096262700009],\n\t\t\t\t[86.32318526200004, 26.580084127000063],\n\t\t\t\t[86.34483768800004, 26.582616272000067],\n\t\t\t\t[86.35367435800003, 26.582616272000067],\n\t\t\t\t[86.38364668800006, 26.572849427],\n\t\t\t\t[86.4448315840001, 26.543083802000112],\n\t\t\t\t[86.47547570800003, 26.531973368000095],\n\t\t\t\t[86.4949060460001, 26.527839254000085],\n\t\t\t\t[86.5106156820001, 26.52013946600009],\n\t\t\t\t[86.52430993700011, 26.509080709000088],\n\t\t\t\t[86.53774580900006, 26.4948696900001],\n\t\t\t\t[86.53795251500003, 26.4948696900001],\n\t\t\t\t[86.55789961800014, 26.484017639000072],\n\t\t\t\t[86.62533736100005, 26.45631907100004],\n\t\t\t\t[86.69520389800005, 26.418233541000077],\n\t\t\t\t[86.71360070900005, 26.414564515000095],\n\t\t\t\t[86.72409102400007, 26.421954244000105],\n\t\t\t\t[86.73070560700006, 26.43378814800012],\n\t\t\t\t[86.7381986900001, 26.44371002200002],\n\t\t\t\t[86.75189294500012, 26.44551869700011],\n\t\t\t\t[86.78723962400005, 26.43306467700002],\n\t\t\t\t[86.79643802900006, 26.431514384000096],\n\t\t\t\t[86.82186283400006, 26.438128967000083],\n\t\t\t\t[86.84635746300012, 26.452650045000055],\n\t\t\t\t[86.86568444800014, 26.472442119000036],\n\t\t\t\t[86.87596805800007, 26.494921367000032],\n\t\t\t\t[86.9071289470001, 26.51150950100005],\n\t\t\t\t[86.93515347300013, 26.520289336000033],\n\t\t\t\t[86.97244795800009, 26.531973368000095],\n\t\t\t\t[86.98521203600012, 26.540655009000048],\n\t\t\t\t[87.01544274900004, 26.568973694000064],\n\t\t\t\t[87.02991215000009, 26.579774068000077],\n\t\t\t\t[87.04133264100005, 26.580187480000106],\n\t\t\t\t[87.04443322800012, 26.561170553000025],\n\t\t\t\t[87.04500166800005, 26.544272359000033],\n\t\t\t\t[87.05647383700011, 26.494921367000032],\n\t\t\t\t[87.05668054200004, 26.4948696900001],\n\t\t\t\t[87.06670577000006, 26.46562082900006],\n\t\t\t\t[87.08329390500006, 26.43208282500005],\n\t\t\t\t[87.10628991700014, 26.40474599300002],\n\t\t\t\t[87.13502201400013, 26.394204],\n\t\t\t\t[87.18845544500005, 26.399578349000123],\n\t\t\t\t[87.2190995690001, 26.408104960000045],\n\t\t\t\t[87.22943485500008, 26.398751526000083],\n\t\t\t\t[87.23630782100014, 26.383300273000103],\n\t\t\t\t[87.24529952000012, 26.370226136000056],\n\t\t\t\t[87.25842533400004, 26.36293975800008],\n\t\t\t\t[87.3004899500001, 26.345989888000062],\n\t\t\t\t[87.31402917500009, 26.343767802000073],\n\t\t\t\t[87.32622481300007, 26.353327942000064],\n\t\t\t\t[87.3449316820001, 26.389346416000038],\n\t\t\t\t[87.35640384900006, 26.403712464000037],\n\t\t\t\t[87.38420577000005, 26.418646953000106],\n\t\t\t\t[87.41645186400012, 26.426966858000057],\n\t\t\t\t[87.44962813400014, 26.428620504000023],\n\t\t\t\t[87.48032393400007, 26.423401185],\n\t\t\t\t[87.55205082300006, 26.38671091700003],\n\t\t\t\t[87.58698409000004, 26.378029277000067],\n\t\t\t\t[87.6239844160001, 26.392912089],\n\t\t\t\t[87.64874495200013, 26.40999327100006],\n\t\t\t\t[87.6596411540001, 26.417510071],\n\t\t\t\t[87.68119022600013, 26.424228007000025],\n\t\t\t\t[87.6975716550001, 26.41626983700006],\n\t\t\t\t[87.71090417500011, 26.405676168000085],\n\t\t\t\t[87.72754398600011, 26.403764140000064],\n\t\t\t\t[87.74222009300013, 26.410482076000093],\n\t\t\t\t[87.7494547930001, 26.425726624000035],\n\t\t\t\t[87.75617273000012, 26.446913961000078],\n\t\t\t\t[87.76898848500008, 26.451461487000117],\n\t\t\t\t[87.78593835400011, 26.445983785000024],\n\t\t\t\t[87.80443851800004, 26.437353821000087],\n\t\t\t\t[87.8215950930001, 26.437508851000032],\n\t\t\t\t[87.85208418800005, 26.460659892000123],\n\t\t\t\t[87.86980920500008, 26.464638978],\n\t\t\t\t[87.87068770400003, 26.460711569000026],\n\t\t\t\t[87.89476892100004, 26.442934876000024],\n\t\t\t\t[87.89730106600007, 26.44345164000005],\n\t\t\t\t[87.90200362200005, 26.43528676300012],\n\t\t\t\t[87.90851485200011, 26.417820130000067],\n\t\t\t\t[87.91476770100007, 26.408259990000076],\n\t\t\t\t[87.92897871900004, 26.396426086000062],\n\t\t\t\t[87.96122481300011, 26.378959453000036],\n\t\t\t\t[87.97548750900012, 26.366557108000066],\n\t\t\t\t[88.00664839700005, 26.369864400000054],\n\t\t\t\t[88.04432051600008, 26.405676168000085],\n\t\t\t\t[88.07418949400011, 26.453941955000104],\n\t\t\t\t[88.08225101700009, 26.4948696900001],\n\t\t\t\t[88.07915043200006, 26.507375387000096],\n\t\t\t\t[88.07982222500004, 26.51755564400007],\n\t\t\t\t[88.08713624100011, 26.539100004000105],\n\t\t\t\t[88.10168135600009, 26.581944479000086],\n\t\t\t\t[88.14663985200008, 26.661216126000014],\n\t\t\t\t[88.16338301600007, 26.70514109300005],\n\t\t\t\t[88.16751713100007, 26.725036519000057],\n\t\t\t\t[88.1690674240001, 26.74400177000011],\n\t\t\t\t[88.16782718900004, 26.762915344000035],\n\t\t\t\t[88.15904219600009, 26.802551169000097],\n\t\t\t\t[88.15532149300003, 26.845597636000022],\n\t\t\t\t[88.15139408400006, 26.862805888000096],\n\t\t\t\t[88.14281579600004, 26.878412170000033],\n\t\t\t\t[88.12043990100005, 26.9088495890001],\n\t\t\t\t[88.11180993700003, 26.924300842],\n\t\t\t\t[88.09682377100006, 26.95933746400003],\n\t\t\t\t[88.07687666900006, 26.991790263000027],\n\t\t\t\t[88.05594771400007, 27.018041891000067],\n\t\t\t\t[88.04282190000009, 27.028945618000122],\n\t\t\t\t[88.02737064700011, 27.03535349500008],\n\t\t\t\t[88.00949060100004, 27.04563710500007],\n\t\t\t\t[87.99130049700011, 27.08150055],\n\t\t\t\t[87.97548750900012, 27.095143128000117],\n\t\t\t\t[87.97073327700008, 27.10273956300007],\n\t\t\t\t[87.96918298300005, 27.11080108700007],\n\t\t\t\t[87.97083663000012, 27.119224345000063],\n\t\t\t\t[87.9854610590001, 27.148369853000062],\n\t\t\t\t[87.98933679200007, 27.2183914190001],\n\t\t\t\t[88.0046627590001, 27.249163088],\n\t\t\t\t[88.02902429200003, 27.298076477000066],\n\t\t\t\t[88.03512211100008, 27.322571106000012],\n\t\t\t\t[88.0325382900001, 27.333888245000068],\n\t\t\t\t[88.02013594600004, 27.353370260000062],\n\t\t\t\t[88.01579512500007, 27.364222311000034],\n\t\t\t\t[88.01476159700007, 27.378071594000076],\n\t\t\t\t[88.01724206500006, 27.389233704000034],\n\t\t\t\t[88.02582035300009, 27.412074686000025],\n\t\t\t\t[88.02959273300007, 27.418740947000046],\n\t\t\t\t[88.03481205300011, 27.42380523700011],\n\t\t\t\t[88.03930790200013, 27.42948964400007],\n\t\t\t\t[88.04163334200007, 27.438067933000085],\n\t\t\t\t[88.03977299000007, 27.442357077000068],\n\t\t\t\t[88.03078129100004, 27.450728659000035],\n\t\t\t\t[88.02809411600009, 27.45512115500013],\n\t\t\t\t[88.02333988400011, 27.474654847000025],\n\t\t\t\t[88.02209965000009, 27.48424082500013],\n\t\t\t\t[88.02333988400011, 27.494912008000128],\n\t\t\t\t[88.04876468900011, 27.545348206000043],\n\t\t\t\t[88.11087976100009, 27.639502666000013],\n\t\t\t\t[88.1348576260001, 27.723166809000062],\n\t\t\t\t[88.14932702700014, 27.748772482],\n\t\t\t\t[88.15966231300013, 27.774119772000105],\n\t\t\t\t[88.15459802200007, 27.815150859000042],\n\t\t\t\t[88.16658695500013, 27.83359934600007],\n\t\t\t\t[88.16462325100008, 27.84535573400005],\n\t\t\t\t[88.15640669800007, 27.85127268500007],\n\t\t\t\t[88.14302250200012, 27.855716858000065],\n\t\t\t\t[88.11821781400005, 27.860884501000058],\n\t\t\t\t[88.10488529500003, 27.8797205610001],\n\t\t\t\t[88.09749556500003, 27.904008484000073],\n\t\t\t\t[88.09992435700008, 27.928322246000093],\n\t\t\t\t[88.11573734600012, 27.947261658000045],\n\t\t\t\t[88.12669274900009, 27.950439759000105],\n\t\t\t\t[88.15118737800003, 27.947209982000018],\n\t\t\t\t[88.16296960500006, 27.946899923000032],\n\t\t\t\t[88.17485518400008, 27.94976796500002],\n\t\t\t\t[88.19785119700003, 27.95829457600003],\n\t\t\t\t[88.37877038600004, 27.982634176000047],\n\t\t\t\t[88.39975101800007, 27.99472646100004],\n\t\t\t\t[88.39985437100012, 27.99472646100004],\n\t\t\t\t[88.39990604700012, 27.994881490000083],\n\t\t\t\t[88.45576827000008, 28.03152008100004],\n\t\t\t\t[88.47540531400011, 28.036248474000033],\n\t\t\t\t[88.50207035300008, 28.02888458300002],\n\t\t\t\t[88.5171598720001, 28.039581604000105],\n\t\t\t\t[88.53080245000007, 28.0590119430001],\n\t\t\t\t[88.55281660900005, 28.078054708000067],\n\t\t\t\t[88.59400272600004, 28.106605937000026],\n\t\t\t\t[88.61048750800012, 28.105830790000127],\n\t\t\t\t[88.63167484600007, 28.083351542000017],\n\t\t\t\t[88.65203536000013, 28.069398906000018],\n\t\t\t\t[88.7101196700001, 28.061983337000115],\n\t\t\t\t[88.73564782700004, 28.055265402000074],\n\t\t\t\t[88.78014123500003, 28.028341980000064],\n\t\t\t\t[88.80293054200013, 28.011004537000062],\n\t\t\t\t[88.8175032960001, 27.994881490000083],\n\t\t\t\t[88.81771000200013, 27.994881490000083],\n\t\t\t\t[88.81771000200013, 27.99472646100004],\n\t\t\t\t[88.81967370600006, 27.977337342000013],\n\t\t\t\t[88.80975183200007, 27.9444969690001],\n\t\t\t\t[88.81068200700014, 27.927857158000066],\n\t\t\t\t[88.81889856000004, 27.91519643200003],\n\t\t\t\t[88.84277307100012, 27.892407125000133],\n\t\t\t\t[88.85155806500012, 27.877162577],\n\t\t\t\t[88.85507206300008, 27.859179179000094],\n\t\t\t\t[88.85388350400007, 27.843676249000097],\n\t\t\t\t[88.80566939300007, 27.655108948000063],\n\t\t\t\t[88.78308679200012, 27.622036031000064],\n\t\t\t\t[88.76737715600007, 27.586198425000035],\n\t\t\t\t[88.74815352400003, 27.560127666000042],\n\t\t\t\t[88.7410221770001, 27.545709941000027],\n\t\t\t\t[88.74164229300004, 27.531679789000023],\n\t\t\t\t[88.75755863400008, 27.511448466000033],\n\t\t\t\t[88.75719689900006, 27.49496368400004],\n\t\t\t\t[88.75435469600012, 27.464216207000092],\n\t\t\t\t[88.75978072200007, 27.435070699000065],\n\t\t\t\t[88.77357832900003, 27.408509013000057],\n\t\t\t\t[88.79538578300009, 27.385926412000018],\n\t\t\t\t[88.80820153800005, 27.378381653000062],\n\t\t\t\t[88.8198287350001, 27.37362742200007],\n\t\t\t\t[88.8308358160001, 27.36732289600006],\n\t\t\t\t[88.85202315300006, 27.342363180000078],\n\t\t\t\t[88.86463220200005, 27.332389628000087],\n\t\t\t\t[88.89233077000011, 27.315543111000082],\n\t\t\t\t[88.88463098200003, 27.286345927000056],\n\t\t\t\t[88.87611560500005, 27.28048567900005],\n\t\t\t\t[88.86142826300011, 27.270377910000022],\n\t\t\t\t[88.80117354300006, 27.256425273000033],\n\t\t\t\t[88.77585209100005, 27.240870667000095],\n\t\t\t\t[88.75435469600012, 27.21260365800002],\n\t\t\t\t[88.7384383540001, 27.17978912300002],\n\t\t\t\t[88.73006677200004, 27.150953674000064],\n\t\t\t\t[88.73308231500005, 27.148972387000114],\n\t\t\t\t[88.74257246900004, 27.142737122000042],\n\t\t\t\t[88.80525598100013, 27.11302317300006],\n\t\t\t\t[88.82763187700004, 27.097881979000064],\n\t\t\t\t[88.84080936700008, 27.075247701000094],\n\t\t\t\t[88.84561527500011, 27.04956451400004],\n\t\t\t\t[88.84561527500011, 26.994942526000088],\n\t\t\t\t[88.84561527500011, 26.994839172000056],\n\t\t\t\t[88.85171309400005, 26.94543650400003],\n\t\t\t\t[88.86711267100003, 26.964246725000052],\n\t\t\t\t[88.8864396570001, 26.978974508000064],\n\t\t\t\t[88.90664514100007, 26.98109324200003],\n\t\t\t\t[88.92447351100003, 26.96166290300006],\n\t\t\t\t[88.92695398000012, 26.94941558800012],\n\t\t\t\t[88.9254036860001, 26.939028626],\n\t\t\t\t[88.92530033400004, 26.929365133000076],\n\t\t\t\t[88.9323283280001, 26.9192365520001],\n\t\t\t\t[88.94276696800011, 26.913707174000123],\n\t\t\t\t[88.95454919500008, 26.91262196900003],\n\t\t\t\t[88.96581465700007, 26.915464173000103],\n\t\t\t\t[88.97532312000004, 26.921717021000077],\n\t\t\t\t[88.99661381100003, 26.92275054900007],\n\t\t\t\t[89.02157352700004, 26.912673645000027],\n\t\t\t\t[89.04487959900007, 26.897119039000117],\n\t\t\t\t[89.06069258700006, 26.88146108000005],\n\t\t\t\t[89.07433516500004, 26.856398010000035],\n\t\t\t\t[89.08244836400007, 26.836037496000117],\n\t\t\t\t[89.0965043540001, 26.821413066000034],\n\t\t\t\t[89.12807865500008, 26.813454895000078],\n\t\t\t\t[89.18461267100014, 26.81056101500009],\n\t\t\t\t[89.21282800300008, 26.813041484000067],\n\t\t\t\t[89.24083662900011, 26.819759420000096],\n\t\t\t\t[89.25261885600008, 26.826787415000084],\n\t\t\t\t[89.26295414200013, 26.836347555000103],\n\t\t\t\t[89.27359948700007, 26.84389231400006],\n\t\t\t\t[89.28636356600009, 26.84497751900004],\n\t\t\t\t[89.3001611730001, 26.844409078000083],\n\t\t\t\t[89.34165734900012, 26.854330953000087],\n\t\t\t\t[89.36889455700003, 26.837358593000076],\n\t\t\t\t[89.40733809400012, 26.81340321900005],\n\t\t\t\t[89.44289148000007, 26.797021789000027],\n\t\t\t\t[89.50541996200008, 26.80368804900003],\n\t\t\t\t[89.54650272600003, 26.79753855400004],\n\t\t\t\t[89.5860868740001, 26.784051005],\n\t\t\t\t[89.61135664900007, 26.76596425400008],\n\t\t\t\t[89.61347538300004, 26.748549296000036],\n\t\t\t\t[89.59750736500013, 26.720954081000045],\n\t\t\t\t[89.60980635600004, 26.712220765000083],\n\t\t\t\t[89.6283065180001, 26.71253082300005],\n\t\t\t\t[89.66323978700007, 26.725501607000083],\n\t\t\t\t[89.68515059500004, 26.72457143100003],\n\t\t\t\t[89.73873905400006, 26.703280742000047],\n\t\t\t\t[89.75466966300013, 26.700988568000113],\n\t\t\t\t[89.76028812700014, 26.700180156],\n\t\t\t\t[89.80007898000014, 26.700490214000084],\n\t\t\t\t[89.80405806500005, 26.699766744000087],\n\t\t\t\t[89.81366988200006, 26.696149394000102],\n\t\t\t\t[89.81728723200013, 26.6962010700001],\n\t\t\t\t[89.82209314000005, 26.70100697900004],\n\t\t\t\t[89.82524540200006, 26.70767323900013],\n\t\t\t\t[89.8267956950001, 26.71351267500002],\n\t\t\t\t[89.8267440190001, 26.715683085000094],\n\t\t\t\t[89.82726078300004, 26.7179051720001],\n\t\t\t\t[89.82767419500004, 26.722452698000055],\n\t\t\t\t[89.82974125100003, 26.727620341000048],\n\t\t\t\t[89.83496057100012, 26.73154775000002],\n\t\t\t\t[89.83904301000013, 26.731237691000032],\n\t\t\t\t[89.84700118000012, 26.724829814000103],\n\t\t\t\t[89.85077355900012, 26.72317616800005],\n\t\t\t\t[89.85870063400006, 26.722056524000052],\n\t\t\t\t[89.85992028800013, 26.7218842570001],\n\t\t\t\t[89.88028080200013, 26.71625152600008],\n\t\t\t\t[89.89040938400007, 26.714856262000083],\n\t\t\t\t[89.91211348500008, 26.716716614000077],\n\t\t\t\t[89.97526208500005, 26.73185780900009],\n\t\t\t\t[90.0891569420001, 26.741728008000095],\n\t\t\t\t[90.12719079600004, 26.75139150000011],\n\t\t\t\t[90.15220218900004, 26.771752014000057],\n\t\t\t\t[90.17742028900005, 26.832058410000045],\n\t\t\t\t[90.21090661700009, 26.85148875000003],\n\t\t\t\t[90.22914839700013, 26.852884013000093],\n\t\t\t\t[90.26599369300004, 26.851592103000044],\n\t\t\t\t[90.28444218000004, 26.857069804000034],\n\t\t\t\t[90.30087528500013, 26.868283590000075],\n\t\t\t\t[90.31420780500014, 26.88037587500007],\n\t\t\t\t[90.32857385300014, 26.890659485000057],\n\t\t\t\t[90.34883101400004, 26.89665395100009],\n\t\t\t\t[90.38262740100004, 26.891796367000055],\n\t\t\t\t[90.4752315670001, 26.832420146000047],\n\t\t\t\t[90.58778283800007, 26.78007192000011],\n\t\t\t\t[90.71707727100011, 26.767049459000063],\n\t\t\t\t[90.94449258000003, 26.778869550000096],\n\t\t\t\t[91.00739546800008, 26.78213897700006],\n\t\t\t\t[91.01278080700007, 26.784348086000065],\n\t\t\t\t[91.06206913300014, 26.804566549000057],\n\t\t\t\t[91.09193811100005, 26.80477325500003],\n\t\t\t\t[91.12707808500011, 26.800897522000056],\n\t\t\t\t[91.19818485600013, 26.80234446200005],\n\t\t\t\t[91.23249800600013, 26.795161438000022],\n\t\t\t\t[91.26195357300003, 26.779038392000032],\n\t\t\t\t[91.27600956200007, 26.77407745400008],\n\t\t\t\t[91.29657678200005, 26.77459421800002],\n\t\t\t\t[91.31321659300005, 26.77867665700002],\n\t\t\t\t[91.33006311000014, 26.785497945000074],\n\t\t\t\t[91.34556604000005, 26.79469635000008],\n\t\t\t\t[91.35838179600006, 26.806168519],\n\t\t\t\t[91.37006066900011, 26.824668681000034],\n\t\t\t\t[91.37812219300008, 26.84280710800006],\n\t\t\t\t[91.38845747900012, 26.858465068],\n\t\t\t\t[91.4063375240001, 26.869523824000012],\n\t\t\t\t[91.42018680900003, 26.871539205000047],\n\t\t\t\t[91.46059777800014, 26.869368795000057],\n\t\t\t\t[91.47506717900006, 26.86554473900013],\n\t\t\t\t[91.4844722900001, 26.852728984000052],\n\t\t\t\t[91.50741662600007, 26.80802887],\n\t\t\t\t[91.52064579300003, 26.79759023000007],\n\t\t\t\t[91.53935266200011, 26.798830465000023],\n\t\t\t\t[91.5756295170001, 26.81014760300009],\n\t\t\t\t[91.5937162680001, 26.81076772100006],\n\t\t\t\t[91.63795129500011, 26.798985494000036],\n\t\t\t\t[91.6537642830001, 26.797951965000053],\n\t\t\t\t[91.70213342300013, 26.803481344000076],\n\t\t\t\t[91.73158898900004, 26.816193746000025],\n\t\t\t\t[91.79525435400006, 26.853504131000065],\n\t\t\t\t[91.82512333200009, 26.858465068],\n\t\t\t\t[91.84393355300006, 26.849370015000133],\n\t\t\t\t[91.8495146080001, 26.834745586000068],\n\t\t\t\t[91.8524084880001, 26.818519185000056],\n\t\t\t\t[91.8630538330001, 26.80477325500003],\n\t\t\t\t[91.8786601160001, 26.80301625600005],\n\t\t\t\t[91.88692834500006, 26.814436747000045],\n\t\t\t\t[91.88589481600008, 26.830869853000095],\n\t\t\t\t[91.87400923700005, 26.84430572500007],\n\t\t\t\t[91.89550663300008, 26.853504131000065],\n\t\t\t\t[91.89550663300008, 26.868283590000075],\n\t\t\t\t[91.89312951700003, 26.881357727000122],\n\t\t\t\t[91.90821903500006, 26.885181784000068],\n\t\t\t\t[91.92568566900007, 26.878670553000106],\n\t\t\t\t[91.9574149980001, 26.85427927700006],\n\t\t\t\t[91.97508833800003, 26.84663116500009],\n\t\t\t\t[92.03585982200013, 26.85484771800013],\n\t\t\t\t[92.07275679500003, 26.88776560500007],\n\t\t\t\t[92.08037091600005, 26.921570891000087],\n\t\t\t\t[92.08391890500008, 26.937323303000127],\n\t\t\t\t[92.06696903500006, 26.994839172000056],\n\t\t\t\t[92.06696903500006, 26.994942526000088],\n\t\t\t\t[92.04970910700007, 27.026826885000062],\n\t\t\t\t[91.99989302600005, 27.071526998000095],\n\t\t\t\t[91.98769738800013, 27.104031474000024],\n\t\t\t\t[91.9879040940001, 27.122273255],\n\t\t\t\t[91.99079797400009, 27.140773418000023],\n\t\t\t\t[91.99586226400004, 27.158033346000096],\n\t\t\t\t[92.00299361200007, 27.172606100000067],\n\t\t\t\t[92.00578806200014, 27.1761123430001],\n\t\t\t\t[92.00847131400008, 27.179479065000024],\n\t\t\t\t[92.02149377500012, 27.19182973300009],\n\t\t\t\t[92.02707482900013, 27.199839580000074],\n\t\t\t\t[92.02996871000005, 27.208469544000096],\n\t\t\t\t[92.03317264800012, 27.227434794000047],\n\t\t\t\t[92.03678999800007, 27.236478170000012],\n\t\t\t\t[92.05063928300012, 27.25141265900008],\n\t\t\t\t[92.08185184800004, 27.2751321410001],\n\t\t\t\t[92.08877648900011, 27.292340394000078],\n\t\t\t\t[92.08484908100013, 27.30422597300013],\n\t\t\t\t[92.02359761663678, 27.446779847112282],\n\t\t\t\t[91.97508833800003, 27.472432760000018],\n\t\t\t\t[91.96330611200011, 27.468918763000076],\n\t\t\t\t[91.90059085495413, 27.459729852655357],\n\t\t\t\t[91.8565776472989, 27.46623873822671],\n\t\t\t\t[91.8162322069483, 27.4613571100768],\n\t\t\t\t[91.77955453390229, 27.45647526576099],\n\t\t\t\t[91.72709172100008, 27.45994159900009],\n\t\t\t\t[91.72704146300003, 27.46000457700005],\n\t\t\t\t[91.70492395000008, 27.468763733000046],\n\t\t\t\t[91.6802226160001, 27.47284617100003],\n\t\t\t\t[91.65738163300011, 27.479150696000048],\n\t\t\t\t[91.6416719980001, 27.49496368400004],\n\t\t\t\t[91.63288700400005, 27.51165517200009],\n\t\t\t\t[91.60446496600008, 27.53214487700005],\n\t\t\t\t[91.59505985500004, 27.54638173400012],\n\t\t\t\t[91.57325240100005, 27.619710592000033],\n\t\t\t\t[91.57986698400003, 27.65797699000005],\n\t\t\t\t[91.62668583200013, 27.716423035000034],\n\t\t\t\t[91.6349570594208, 27.746570816190285],\n\t\t\t\t[91.63576961127859, 27.78252481766623],\n\t\t\t\t[91.60533558693375, 27.810658168996827],\n\t\t\t\t[91.5660232169979, 27.821073950502466],\n\t\t\t\t[91.56435452404213, 27.85137236654151],\n\t\t\t\t[91.6283394780001, 27.852693787000035],\n\t\t\t\t[91.68013149075769, 27.849823277598603],\n\t\t\t\t[91.72987134422583, 27.804136158001306],\n\t\t\t\t[91.82658872441321, 27.807627271770244],\n\t\t\t\t[91.85637335954294, 27.764539482011514],\n\t\t\t\t[91.86491418500009, 27.72998809800002],\n\t\t\t\t[91.90873579900006, 27.731900126000127],\n\t\t\t\t[91.95224735500011, 27.724820455],\n\t\t\t\t[91.96800093766346, 27.746278233869482],\n\t\t\t\t[91.98889765320416, 27.76939841380579],\n\t\t\t\t[92.06487820550117, 27.76172129397611],\n\t\t\t\t[92.10615954418942, 27.786080717238843],\n\t\t\t\t[92.1262935790001, 27.81272206600009],\n\t\t\t\t[92.23956831900006, 27.865276998000056],\n\t\t\t\t[92.24918013500007, 27.862641500000038],\n\t\t\t\t[92.25827518700004, 27.848197937000023],\n\t\t\t\t[92.27522505700006, 27.81168853700011],\n\t\t\t\t[92.28876428200005, 27.793085022000056],\n\t\t\t\t[92.30385380100006, 27.786160380000055],\n\t\t\t\t[92.31728967300006, 27.80367869100003],\n\t\t\t\t[92.32917525300013, 27.832927552000072],\n\t\t\t\t[92.33465295400003, 27.83127390600002],\n\t\t\t\t[92.33982059800013, 27.815564270000053],\n\t\t\t\t[92.35005253100007, 27.802541809000033],\n\t\t\t\t[92.36793257700003, 27.80383372000007],\n\t\t\t\t[92.37558068800013, 27.821119487000075],\n\t\t\t\t[92.38105839100012, 27.842461853000074],\n\t\t\t\t[92.39284061800004, 27.85602691700005],\n\t\t\t\t[92.40441613800004, 27.85383066900006],\n\t\t\t\t[92.41733524600005, 27.828948466],\n\t\t\t\t[92.42756717900005, 27.82117116400009],\n\t\t\t\t[92.43903934800005, 27.823289897000066],\n\t\t\t\t[92.47510949800005, 27.846595968000074],\n\t\t\t\t[92.51815087726021, 27.839468002981643],\n\t\t\t\t[92.57497681769904, 27.847806414432647],\n\t\t\t\t[92.59291178341888, 27.868193283595886],\n\t\t\t\t[92.63646812873851, 27.89536981004999],\n\t\t\t\t[92.68367428669768, 27.910450219011963],\n\t\t\t\t[92.71077012957788, 27.949702392409918],\n\t\t\t\t[92.73639150917766, 27.98590893651867],\n\t\t\t\t[92.70134891800006, 28.025241394000133],\n\t\t\t\t[92.70134891800006, 28.037824606000058],\n\t\t\t\t[92.68925663200014, 28.048314921],\n\t\t\t\t[92.65422001100012, 28.052087301000128],\n\t\t\t\t[92.63892378800006, 28.057487488000092],\n\t\t\t\t[92.63727014200003, 28.071982728000123],\n\t\t\t\t[92.65484012900009, 28.105830790000127],\n\t\t\t\t[92.67861128800007, 28.133064270000105],\n\t\t\t\t[92.70786014900011, 28.155414328000106],\n\t\t\t\t[92.7700785720001, 28.192182108000097],\n\t\t\t\t[92.77917362500011, 28.195902812],\n\t\t\t\t[92.78289432800011, 28.190941874000046],\n\t\t\t\t[92.78537479700009, 28.183293762000076],\n\t\t\t\t[92.79023238100007, 28.178901266000068],\n\t\t\t\t[92.80532190000008, 28.17802276700003],\n\t\t\t\t[92.81989465400005, 28.17926300100008],\n\t\t\t\t[92.8347774660001, 28.183526306000132],\n\t\t\t\t[92.85028039600013, 28.19194956500003],\n\t\t\t\t[92.8653699140001, 28.20520457000002],\n\t\t\t\t[92.88955448400009, 28.23582285600004],\n\t\t\t\t[92.90381717900004, 28.2496979780001],\n\t\t\t\t[92.92200728300008, 28.25863800100005],\n\t\t\t\t[92.96035119600003, 28.270213521000088],\n\t\t\t\t[92.97492395000006, 28.28230580700007],\n\t\t\t\t[93.04639880818196, 28.302097099545048],\n\t\t\t\t[93.12982812476821, 28.325961566073488],\n\t\t\t\t[93.20782489381371, 28.340539283245555],\n\t\t\t\t[93.21807344565363, 28.39464655767386],\n\t\t\t\t[93.1862858334245, 28.431995228097378],\n\t\t\t\t[93.21883846222534, 28.457435846387227],\n\t\t\t\t[93.25906765301328, 28.496023260000364],\n\t\t\t\t[93.2869721652333, 28.520517242676647],\n\t\t\t\t[93.30284340070244, 28.556921073348917],\n\t\t\t\t[93.31717003715039, 28.603462550497838],\n\t\t\t\t[93.35543239724171, 28.624065359777703],\n\t\t\t\t[93.44621301300003, 28.671894430000023],\n\t\t\t\t[93.55173628800009, 28.67894826200005],\n\t\t\t\t[93.60713342300005, 28.672204488000105],\n\t\t\t\t[93.62553023300006, 28.67235951800005],\n\t\t\t\t[93.64341027900008, 28.680240174000105],\n\t\t\t\t[93.66490848182954, 28.690238755807428],\n\t\t\t\t[93.70552535000007, 28.69189320900007],\n\t\t\t\t[93.72247522000009, 28.696647441000053],\n\t\t\t\t[93.78174379684887, 28.68050383781251],\n\t\t\t\t[93.86307969177443, 28.704870831024095],\n\t\t\t\t[93.92778566056765, 28.68275160171495],\n\t\t\t\t[93.96109345404737, 28.72994349590268],\n\t\t\t\t[93.9815905577272, 28.768130860141966],\n\t\t\t\t[93.99313607399837, 28.80188742309345],\n\t\t\t\t[93.99201949100012, 28.844648743000064],\n\t\t\t\t[94.01144982900013, 28.85302032500003],\n\t\t\t\t[94.02684940600011, 28.864182435000075],\n\t\t\t\t[94.07947398050715, 28.883072105010925],\n\t\t\t\t[94.1353958914097, 28.897788397353693],\n\t\t\t\t[94.17365825150097, 28.930164240507835],\n\t\t\t\t[94.2501829716835, 28.933107498976327],\n\t\t\t\t[94.29138859024334, 28.977256376004746],\n\t\t\t\t[94.34731050114596, 29.024348511501685],\n\t\t\t\t[94.30904814105469, 29.059667613124404],\n\t\t\t\t[94.27078578096348, 29.097929973215642],\n\t\t\t\t[94.28750533100003, 29.147937724000073],\n\t\t\t\t[94.32378218600007, 29.146025696000052],\n\t\t\t\t[94.33577111900013, 29.149617208000038],\n\t\t\t\t[94.34631311100009, 29.1590739950001],\n\t\t\t\t[94.36253951000009, 29.185325623000026],\n\t\t\t\t[94.37287479700012, 29.19630686500001],\n\t\t\t\t[94.39643925000013, 29.207081400000035],\n\t\t\t\t[94.42238081900007, 29.210492045000066],\n\t\t\t\t[94.47498742700003, 29.210802104000052],\n\t\t\t\t[94.49824182200007, 29.21522043900005],\n\t\t\t\t[94.51477828000009, 29.22105987600004],\n\t\t\t\t[94.52862756400003, 29.2312401330001],\n\t\t\t\t[94.5826811120001, 29.302915345000073],\n\t\t\t\t[94.59994104000009, 29.316635437000016],\n\t\t\t\t[94.6304301350001, 29.319451803000064],\n\t\t\t\t[94.66846399000013, 29.306610209000084],\n\t\t\t\t[94.70422408000013, 29.284699402000044],\n\t\t\t\t[94.75641727800013, 29.230516663000017],\n\t\t\t\t[94.76768273900007, 29.21385101300008],\n\t\t\t\t[94.76148156800008, 29.174706116000053],\n\t\t\t\t[94.77657108500011, 29.16669626900007],\n\t\t\t\t[94.79879195200004, 29.1664378870001],\n\t\t\t\t[94.81543176300005, 29.16886667900006],\n\t\t\t\t[94.85408573500007, 29.17000356000007],\n\t\t\t\t[94.89129276600005, 29.160495097000094],\n\t\t\t\t[94.98906457600003, 29.15398386700012],\n\t\t\t\t[95.04766564900007, 29.140806377000033],\n\t\t\t\t[95.09903202400011, 29.113779603000083],\n\t\t\t\t[95.11691206900008, 29.108095195000047],\n\t\t\t\t[95.19153283800006, 29.096829733000092],\n\t\t\t\t[95.19969771300003, 29.094245911000073],\n\t\t\t\t[95.2078625900001, 29.089595032000105],\n\t\t\t\t[95.21282352700013, 29.08186940500012],\n\t\t\t\t[95.21406376100009, 29.07308441200003],\n\t\t\t\t[95.21633752500009, 29.06499705000003],\n\t\t\t\t[95.22491581200012, 29.05936431900001],\n\t\t\t\t[95.2815531820001, 29.052672221000094],\n\t\t\t\t[95.36740605062847, 29.03649616327051],\n\t\t\t\t[95.42982403198397, 29.046524645630395],\n\t\t\t\t[95.48757683710141, 29.068994487006023],\n\t\t\t\t[95.51130660000013, 29.131788839000095],\n\t\t\t\t[95.52143518100007, 29.13786082000003],\n\t\t\t\t[95.52267541500004, 29.161192729000064],\n\t\t\t\t[95.51192671700011, 29.19754709900006],\n\t\t\t\t[95.51533736200014, 29.209432679000074],\n\t\t\t\t[95.55016727700007, 29.212481588000017],\n\t\t\t\t[95.55202762800008, 29.220129700000072],\n\t\t\t\t[95.55068404100012, 29.230284119000046],\n\t\t\t\t[95.55378462800007, 29.239043275000128],\n\t\t\t\t[95.56442997300007, 29.2456061810001],\n\t\t\t\t[95.57290490800006, 29.247259827000065],\n\t\t\t\t[95.58168990100006, 29.24746653300012],\n\t\t\t\t[95.59233524600006, 29.249688619000025],\n\t\t\t\t[95.64669738938943, 29.22835044810863],\n\t\t\t\t[95.71716496895556, 29.218283651027733],\n\t\t\t\t[95.7473653601981, 29.27365103497256],\n\t\t\t\t[95.74478072100004, 29.340432435000068],\n\t\t\t\t[95.77640669800007, 29.345548401000073],\n\t\t\t\t[95.79594038900007, 29.352886455000046],\n\t\t\t\t[95.86313352662813, 29.32398502037684],\n\t\t\t\t[95.95373470035588, 29.35921881015993],\n\t\t\t\t[96.01413548284108, 29.364252208700393],\n\t\t\t\t[96.07453626532634, 29.369285607240855],\n\t\t\t\t[96.14196578000008, 29.368466899000097],\n\t\t\t\t[96.15095747900011, 29.35407501200008],\n\t\t\t\t[96.16604699800013, 29.303173726000054],\n\t\t\t\t[96.17627893100013, 29.28645640100011],\n\t\t\t\t[96.20542443800014, 29.256949158000097],\n\t\t\t\t[96.23529341600005, 29.241213684000016],\n\t\t\t\t[96.26784956900008, 29.24173044900006],\n\t\t\t\t[96.30412642400006, 29.261212464000053],\n\t\t\t\t[96.32324670400004, 29.275010071000096],\n\t\t\t\t[96.33709598900009, 29.27971262700008],\n\t\t\t\t[96.34991174300006, 29.274234924],\n\t\t\t\t[96.36624149600004, 29.257233379000056],\n\t\t\t\t[96.36686161300008, 29.24421091700013],\n\t\t\t\t[96.34236698400014, 29.21064707500001],\n\t\t\t\t[96.32748417200008, 29.180442200000087],\n\t\t\t\t[96.31642541500008, 29.171863912000063],\n\t\t\t\t[96.21007531700008, 29.145767314000082],\n\t\t\t\t[96.19364221300003, 29.13693064400009],\n\t\t\t\t[96.1835136310001, 29.123778992000027],\n\t\t\t\t[96.17462528500005, 29.108844503000043],\n\t\t\t\t[96.17595371463305, 29.017353609711428],\n\t\t\t\t[96.19532275757172, 28.941105845485463],\n\t\t\t\t[96.24858762565306, 28.945343306324006],\n\t\t\t\t[96.29465549772947, 28.99232448388489],\n\t\t\t\t[96.36656829155606, 29.036536563468914],\n\t\t\t\t[96.45760542900013, 28.99458791100001],\n\t\t\t\t[96.45119755100012, 28.98138458300012],\n\t\t\t\t[96.45212772700006, 28.970377502000034],\n\t\t\t\t[96.46008589700011, 28.963349507000103],\n\t\t\t\t[96.47465865100008, 28.962057597000054],\n\t\t\t\t[96.49222863800003, 28.94800160700005],\n\t\t\t\t[96.50039351400005, 28.929243062000054],\n\t\t\t\t[96.51083215400013, 28.885524801000074],\n\t\t\t\t[96.52375126100003, 28.864414979000045],\n\t\t\t\t[96.57666792800006, 28.808526917000066],\n\t\t\t\t[96.59258426900004, 28.757884013000094],\n\t\t\t\t[96.59800971353144, 28.709910398443995],\n\t\t\t\t[96.50104350465409, 28.687631303142155],\n\t\t\t\t[96.50237514126326, 28.644476217418358],\n\t\t\t\t[96.40901887262294, 28.558928647938785],\n\t\t\t\t[96.33645875408492, 28.47966681390912],\n\t\t\t\t[96.30185249373439, 28.420710938634112],\n\t\t\t\t[96.36964414401973, 28.378115826943503],\n\t\t\t\t[96.44112658162652, 28.39541577691665],\n\t\t\t\t[96.49522587100006, 28.42147043900009],\n\t\t\t\t[96.51238244700005, 28.428808492000073],\n\t\t\t\t[96.5615177204665, 28.44729288316006],\n\t\t\t\t[96.60442611830537, 28.444534241434948],\n\t\t\t\t[96.71692392905247, 28.436539447625634],\n\t\t\t\t[96.89788863200005, 28.354704489000042],\n\t\t\t\t[96.93395878200005, 28.336617737000026],\n\t\t\t\t[96.96579146400012, 28.330468242000066],\n\t\t\t\t[96.9974174400001, 28.337082825000053],\n\t\t\t\t[97.03297082600005, 28.357029928000074],\n\t\t\t\t[97.07844608600004, 28.3751425170001],\n\t\t\t\t[97.11554976400004, 28.366564230000066],\n\t\t\t\t[97.18272912600008, 28.31499115000007],\n\t\t\t\t[97.19327111900003, 28.311399638000083],\n\t\t\t\t[97.20277958200012, 28.31155466700004],\n\t\t\t\t[97.21053104700013, 28.308092346000066],\n\t\t\t\t[97.22076298000007, 28.28339101200008],\n\t\t\t\t[97.22965132700011, 28.274606018000085],\n\t\t\t\t[97.2852551680001, 28.235667827],\n\t\t\t\t[97.32349572800013, 28.217477723000073],\n\t\t\t\t[97.32866337100012, 28.190011699000095],\n\t\t\t\t[97.29889774600014, 28.12924021400009],\n\t\t\t\t[97.29290328000008, 28.095082092],\n\t\t\t\t[97.3065458580001, 28.0696572880001],\n\t\t\t\t[97.3551217050001, 28.02304514600003],\n\t\t\t\t[97.36225305200003, 27.994881490000083],\n\t\t\t\t[97.35677535000013, 27.98056711800008],\n\t\t\t\t[97.34003218600003, 27.951809184000084],\n\t\t\t\t[97.33569136600005, 27.93560862200006],\n\t\t\t\t[97.33631148300009, 27.91318105100008],\n\t\t\t\t[97.33817183500008, 27.90155385300004],\n\t\t\t\t[97.33352095600003, 27.894164124000028],\n\t\t\t\t[97.3149174400001, 27.884603983000105],\n\t\t\t\t[97.29290328000008, 27.877550151],\n\t\t\t\t[97.28866581300014, 27.88434560200004],\n\t\t\t\t[97.28804569500005, 27.8977556360001],\n\t\t\t\t[97.27636682200011, 27.910338847],\n\t\t\t\t[97.26065718600006, 27.912044170000073],\n\t\t\t\t[97.24122684700006, 27.907858379000047],\n\t\t\t\t[97.2229333900001, 27.899719341000022],\n\t\t\t\t[97.21094445800003, 27.88951324500006],\n\t\t\t\t[97.19802535100013, 27.87326100700004],\n\t\t\t\t[97.1821090090001, 27.857267151000073],\n\t\t\t\t[97.13177616400003, 27.816856181],\n\t\t\t\t[97.12319787600006, 27.812153625000022],\n\t\t\t\t[97.11244917900007, 27.809208069000036],\n\t\t\t\t[97.10604130000013, 27.805539043000024],\n\t\t\t\t[97.09818648300006, 27.791017965],\n\t\t\t\t[97.09219201700006, 27.785488587000074],\n\t\t\t\t[97.07234826700005, 27.779184062000084],\n\t\t\t\t[97.06532027200006, 27.773990581000064],\n\t\t\t\t[97.06201298100007, 27.763345235000074],\n\t\t\t\t[97.06035933400011, 27.750451965000067],\n\t\t\t\t[97.05674198400004, 27.746782939000056],\n\t\t\t\t[97.05054081200007, 27.746782939000056],\n\t\t\t\t[97.03617476400007, 27.742920068000032],\n\t\t\t\t[97.00403202400008, 27.73427724200006],\n\t\t\t\t[96.99090621000005, 27.72662913000009],\n\t\t\t\t[96.95700647000012, 27.68807851200002],\n\t\t\t\t[96.93953983600011, 27.6740225220001],\n\t\t\t\t[96.89974898300005, 27.649476217000128],\n\t\t\t\t[96.88352258400005, 27.636324565000066],\n\t\t\t\t[96.87019006400004, 27.61909047500008],\n\t\t\t\t[96.86212854000007, 27.599298401000098],\n\t\t\t\t[96.86202518800013, 27.57836944600011],\n\t\t\t\t[96.86615930200003, 27.56844757100002],\n\t\t\t\t[96.87732141200007, 27.553073832000038],\n\t\t\t\t[96.88031864400011, 27.543849589000033],\n\t\t\t\t[96.88104211500007, 27.534392802000056],\n\t\t\t\t[96.88465946500008, 27.515840963000116],\n\t\t\t\t[96.88848352100013, 27.507185160000077],\n\t\t\t\t[96.89024051900009, 27.492483215000064],\n\t\t\t\t[96.87701135200007, 27.463079325000095],\n\t\t\t\t[96.8813521730001, 27.44411407500003],\n\t\t\t\t[96.90512333200013, 27.408405660000128],\n\t\t\t\t[97.06790409400008, 27.21709950800006],\n\t\t\t\t[97.09549930900005, 27.19126129200002],\n\t\t\t\t[97.10128706900014, 27.183303121000066],\n\t\t\t\t[97.10170048100014, 27.165268046000065],\n\t\t\t\t[97.1043876550001, 27.15601796500006],\n\t\t\t\t[97.11172570800005, 27.14883494100009],\n\t\t\t\t[97.12082076100006, 27.143925680000066],\n\t\t\t\t[97.12929569600004, 27.137879537000018],\n\t\t\t\t[97.13477339700012, 27.12733754500006],\n\t\t\t\t[97.13301639900004, 27.119586080000047],\n\t\t\t\t[97.1228878170001, 27.093696188000123],\n\t\t\t\t[97.1191671140001, 27.08728831000009],\n\t\t\t\t[97.10604130000013, 27.08258575400002],\n\t\t\t\t[97.09797977800014, 27.085893046000095],\n\t\t\t\t[97.08991825400005, 27.09219757100003],\n\t\t\t\t[97.07720585100009, 27.09648671500007],\n\t\t\t\t[97.06697391800003, 27.095246480000057],\n\t\t\t\t[97.05882660700013, 27.092075635000057],\n\t\t\t\t[97.0478536380001, 27.087805074000116],\n\t\t\t\t[97.03803511600006, 27.087029928],\n\t\t\t\t[97.02676965400008, 27.091474101000117],\n\t\t\t\t[97.01891483600014, 27.098708802000075],\n\t\t\t\t[97.01188684100003, 27.107028707000055],\n\t\t\t\t[97.00299849500004, 27.11452179000007],\n\t\t\t\t[96.86533247900013, 27.1716242480001],\n\t\t\t\t[96.84269820200007, 27.188522441000075],\n\t\t\t\t[96.84176802600012, 27.204387106000084],\n\t\t\t\t[96.85127649000003, 27.221181946000073],\n\t\t\t\t[96.85964807200008, 27.240715637000065],\n\t\t\t\t[96.85375695800008, 27.248725485000037],\n\t\t\t\t[96.82171757000009, 27.273065084000066],\n\t\t\t\t[96.80993534400005, 27.285777487000118],\n\t\t\t\t[96.78916141700012, 27.31797190400006],\n\t\t\t\t[96.77634566300003, 27.330632630000096],\n\t\t\t\t[96.75887902800008, 27.341743063000123],\n\t\t\t\t[96.72415246600008, 27.35626414000005],\n\t\t\t\t[96.70523889200012, 27.360759989000073],\n\t\t\t\t[96.68725549300012, 27.361741842000058],\n\t\t\t\t[96.67588667900003, 27.357659404000046],\n\t\t\t\t[96.65924686700004, 27.341433004000024],\n\t\t\t\t[96.64901493300005, 27.336213685000118],\n\t\t\t\t[96.63640588400011, 27.335541891000034],\n\t\t\t\t[96.62927453600008, 27.338694153000077],\n\t\t\t\t[96.62317671800014, 27.34365509100003],\n\t\t\t\t[96.61418501800006, 27.34840932300004],\n\t\t\t\t[96.58689986200005, 27.353576966000034],\n\t\t\t\t[96.57604781100014, 27.34541208900002],\n\t\t\t\t[96.5674695240001, 27.328307191000064],\n\t\t\t\t[96.54731571500014, 27.306448059000033],\n\t\t\t\t[96.53181278500011, 27.298541565000065],\n\t\t\t\t[96.51093550700006, 27.292495422000044],\n\t\t\t\t[96.49005822700008, 27.290738424000054],\n\t\t\t\t[96.47465865100008, 27.29538930300002],\n\t\t\t\t[96.40778934700012, 27.29817983000008],\n\t\t\t\t[96.14258589700006, 27.25751047800013],\n\t\t\t\t[96.07416630100005, 27.22986358600012],\n\t\t\t\t[96.01318811100009, 27.190796204000023],\n\t\t\t\t[95.97484419800008, 27.142892151000083],\n\t\t\t\t[95.93836063700007, 27.079898580000062],\n\t\t\t\t[95.91644983000003, 27.051373189000017],\n\t\t\t\t[95.88885461500013, 27.0270335900001],\n\t\t\t\t[95.86146610500009, 27.014217835000025],\n\t\t\t\t[95.8049320880001, 27.00476104800005],\n\t\t\t\t[95.77795699100005, 26.995149231000042],\n\t\t\t\t[95.73496219900011, 26.947296855000033],\n\t\t\t\t[95.70922733600003, 26.907454326000035],\n\t\t\t\t[95.69930546100011, 26.896188863000063],\n\t\t\t\t[95.68607629400003, 26.89127960300003],\n\t\t\t\t[95.63998091600007, 26.88642201800009],\n\t\t\t\t[95.62427128100012, 26.880737610000054],\n\t\t\t\t[95.61331587700005, 26.867921855000063],\n\t\t\t\t[95.60339400200013, 26.844254049000043],\n\t\t\t\t[95.59130171700008, 26.823738505000065],\n\t\t\t\t[95.57476525900006, 26.81614207000011],\n\t\t\t\t[95.55440474400012, 26.816607157000035],\n\t\t\t\t[95.53135705600005, 26.820276185000026],\n\t\t\t\t[95.4898092040001, 26.810716044000046],\n\t\t\t\t[95.46273075300013, 26.777178040000123],\n\t\t\t\t[95.43999312400007, 26.73537180600006],\n\t\t\t\t[95.4106409100001, 26.701627096],\n\t\t\t\t[95.3926575110001, 26.691756898],\n\t\t\t\t[95.31596968600007, 26.66907094300005],\n\t\t\t\t[95.27896936100012, 26.65294789700006],\n\t\t\t\t[95.26057255100011, 26.647625224000123],\n\t\t\t\t[95.24693311800007, 26.64890392100004],\n\t\t\t\t[95.23907515500008, 26.649640605000073],\n\t\t\t\t[95.22326216700009, 26.67036285400009],\n\t\t\t\t[95.20486535700007, 26.66757232700003],\n\t\t\t\t[95.19556359900014, 26.660751038000072],\n\t\t\t\t[95.18161096200004, 26.641682435000106],\n\t\t\t\t[95.1732393800001, 26.63382761700008],\n\t\t\t\t[95.16342085800011, 26.62974517800005],\n\t\t\t\t[95.14140669800014, 26.624990946000068],\n\t\t\t\t[95.13262170500013, 26.620805155000127],\n\t\t\t\t[95.12280318300009, 26.611606751000025],\n\t\t\t\t[95.11908247900004, 26.604217021000025],\n\t\t\t\t[95.1158785400001, 26.575639954000067],\n\t\t\t\t[95.11618859900005, 26.56933542900005],\n\t\t\t\t[95.11494836400004, 26.562565816000117],\n\t\t\t\t[95.10957401600007, 26.55130035400005],\n\t\t\t\t[95.09923872900009, 26.536107484000027],\n\t\t\t\t[95.06988651600011, 26.506238506],\n\t\t\t\t[95.05438358600009, 26.494921367000032],\n\t\t\t\t[95.04063765500013, 26.47559438100008],\n\t\t\t\t[95.04260135900006, 26.459678040000043],\n\t\t\t\t[95.0617216390001, 26.426605123000073],\n\t\t\t\t[95.06606245900014, 26.407433167000065],\n\t\t\t\t[95.06420210800013, 26.392602031000123],\n\t\t\t\t[95.05045617700011, 26.359064026000013],\n\t\t\t\t[95.04363488800004, 26.327696432],\n\t\t\t\t[95.04177453600005, 26.287595520000096],\n\t\t\t\t[95.04632206200006, 26.24795969700004],\n\t\t\t\t[95.05872440600007, 26.217677307000102],\n\t\t\t\t[95.06637251800004, 26.2110110470001],\n\t\t\t\t[95.07453739500005, 26.208323873000055],\n\t\t\t\t[95.08280562300007, 26.20661855100009],\n\t\t\t\t[95.09076379400005, 26.202691142000035],\n\t\t\t\t[95.09448449700005, 26.195043030000065],\n\t\t\t\t[95.08973026500007, 26.187601624000123],\n\t\t\t\t[95.08239221200006, 26.179798483000113],\n\t\t\t\t[95.07836145100009, 26.171323548000103],\n\t\t\t\t[95.08817997300008, 26.10409250900004],\n\t\t\t\t[95.10171919800013, 26.09339548800004],\n\t\t\t\t[95.13747928900005, 26.082956848],\n\t\t\t\t[95.1500883380001, 26.070967916000043],\n\t\t\t\t[95.15122522000007, 26.04993560800004],\n\t\t\t\t[95.13954634600003, 26.02993682900008],\n\t\t\t\t[95.10823042800013, 25.99510691300013],\n\t\t\t\t[95.0658557540001, 25.953817444000023],\n\t\t\t\t[95.04942264900012, 25.943740540000064],\n\t\t\t\t[95.01200891200006, 25.93144154900004],\n\t\t\t\t[95.0006400960001, 25.922036438000063],\n\t\t\t\t[94.99402551300005, 25.90043569],\n\t\t\t\t[94.99319869000004, 25.88095367400011],\n\t\t\t\t[95.01345585200005, 25.777704163000053],\n\t\t\t\t[95.01531620300005, 25.755121562000014],\n\t\t\t\t[95.00880497300011, 25.73713816300004],\n\t\t\t\t[94.99991662700006, 25.731557109000036],\n\t\t\t\t[94.97862593600007, 25.72907664000006],\n\t\t\t\t[94.96901412000005, 25.725614319],\n\t\t\t\t[94.96146936100013, 25.717966207000032],\n\t\t\t\t[94.87165572100014, 25.59802520800004],\n\t\t\t\t[94.86803837100007, 25.59471791600005],\n\t\t\t\t[94.85749637900005, 25.589343567000085],\n\t\t\t\t[94.8534656170001, 25.58603627500007],\n\t\t\t\t[94.85294885300004, 25.58076528000005],\n\t\t\t\t[94.86101037600014, 25.571411846],\n\t\t\t\t[94.86028690600006, 25.567174378000047],\n\t\t\t\t[94.85077844300014, 25.56278188100005],\n\t\t\t\t[94.83103804600012, 25.56247182300008],\n\t\t\t\t[94.82235640500005, 25.559112854000077],\n\t\t\t\t[94.80799035600012, 25.542628072000085],\n\t\t\t\t[94.78235884600008, 25.504594219000055],\n\t\t\t\t[94.76437544800007, 25.49167511000003],\n\t\t\t\t[94.74577193200014, 25.486610820000053],\n\t\t\t\t[94.71114872200013, 25.482786764000124],\n\t\t\t\t[94.69202844200004, 25.476327210000065],\n\t\t\t\t[94.65947229000005, 25.45550160800012],\n\t\t\t\t[94.6503600370001, 25.446649705000098],\n\t\t\t\t[94.63053348800008, 25.427389629000075],\n\t\t\t\t[94.60800256400012, 25.394626770000073],\n\t\t\t\t[94.55012496000006, 25.245281881],\n\t\t\t\t[94.55332889800013, 25.20414744000003],\n\t\t\t\t[94.57689335200013, 25.173606670000126],\n\t\t\t\t[94.61296350100014, 25.1613593550001],\n\t\t\t\t[94.65327111800008, 25.15412465400003],\n\t\t\t\t[94.68913456300004, 25.138518372000092],\n\t\t\t\t[94.70680790300014, 25.10994130500002],\n\t\t\t\t[94.71383589700014, 25.068264262000085],\n\t\t\t\t[94.7085649010001, 25.025889587000094],\n\t\t\t\t[94.68975467900003, 24.99509043400012],\n\t\t\t\t[94.67352828000008, 24.974807434000112],\n\t\t\t\t[94.65482141100011, 24.889153748000027],\n\t\t\t\t[94.63911177600005, 24.862798767000058],\n\t\t\t\t[94.59901086400004, 24.813473612000067],\n\t\t\t\t[94.59322310400006, 24.7837855020001],\n\t\t\t\t[94.59322310400006, 24.765931295000044],\n\t\t\t\t[94.58950240100006, 24.747250264000073],\n\t\t\t\t[94.58154423100012, 24.73011952800003],\n\t\t\t\t[94.56945194600013, 24.716399434],\n\t\t\t\t[94.55570601400007, 24.70885467600006],\n\t\t\t\t[94.54340702300004, 24.70733022000003],\n\t\t\t\t[94.53100468000008, 24.70748525000006],\n\t\t\t\t[94.51632857300007, 24.704953105000087],\n\t\t\t\t[94.50795699100013, 24.689010925000062],\n\t\t\t\t[94.48707971200014, 24.620462138000036],\n\t\t\t\t[94.47498742700003, 24.597388611000056],\n\t\t\t\t[94.43023563600008, 24.570904439000074],\n\t\t\t\t[94.4184534100001, 24.56031077100009],\n\t\t\t\t[94.41080529800013, 24.54594472300009],\n\t\t\t\t[94.39705936700005, 24.495069275000063],\n\t\t\t\t[94.38186649600004, 24.486310120000084],\n\t\t\t\t[94.37039432800003, 24.47773183300005],\n\t\t\t\t[94.36367639200012, 24.46582041500001],\n\t\t\t\t[94.36119592300014, 24.425409444000124],\n\t\t\t\t[94.35220422300011, 24.413937277000016],\n\t\t\t\t[94.34000858600007, 24.40600494400006],\n\t\t\t\t[94.32874312400003, 24.39448110000002],\n\t\t\t\t[94.32832971200003, 24.388486634000103],\n\t\t\t\t[94.33174035600013, 24.371097514000084],\n\t\t\t\t[94.33070682800013, 24.36285512300013],\n\t\t\t\t[94.32367883300003, 24.35466440800009],\n\t\t\t\t[94.30280155400004, 24.341021831000106],\n\t\t\t\t[94.29536014800004, 24.332598572],\n\t\t\t\t[94.28998580000007, 24.316759746000017],\n\t\t\t\t[94.28688521300006, 24.283066712000064],\n\t\t\t\t[94.28275109900011, 24.26642690100003],\n\t\t\t\t[94.23396854600009, 24.160335185000108],\n\t\t\t\t[94.22218632100004, 24.122637228000073],\n\t\t\t\t[94.21846561700005, 24.086670431000087],\n\t\t\t\t[94.21412479700007, 24.069177959000044],\n\t\t\t\t[94.20368615700005, 24.05775746700003],\n\t\t\t\t[94.19913863200003, 24.048093974000025],\n\t\t\t\t[94.19386763500006, 24.00967254700008],\n\t\t\t\t[94.1902502850001, 23.995280660000063],\n\t\t\t\t[94.14487837800004, 23.93887583400003],\n\t\t\t\t[94.13505985500007, 23.919006246000052],\n\t\t\t\t[94.13361291500007, 23.899162496000045],\n\t\t\t\t[94.13505985500007, 23.877303365],\n\t\t\t\t[94.13185591700011, 23.856968689000084],\n\t\t\t\t[94.12885926700005, 23.853904873000076],\n\t\t\t\t[94.11686975100014, 23.84164662700003],\n\t\t\t\t[94.09971317600008, 23.842628479000084],\n\t\t\t\t[94.08534712700009, 23.857511292000126],\n\t\t\t\t[94.07108443200008, 23.876114808000082],\n\t\t\t\t[94.05506473800006, 23.88794871],\n\t\t\t\t[93.99791060400014, 23.916965027000074],\n\t\t\t\t[93.97506962100005, 23.920918274000044],\n\t\t\t\t[93.94054976400014, 23.928876445000114],\n\t\t\t\t[93.91233443200008, 23.93900502500007],\n\t\t\t\t[93.88318892500007, 23.94530955000009],\n\t\t\t\t[93.80371057200006, 23.936059469000057],\n\t\t\t\t[93.78283329300007, 23.94546457900013],\n\t\t\t\t[93.74304244000007, 23.995280660000063],\n\t\t\t\t[93.71110640500012, 24.005460917000036],\n\t\t\t\t[93.66046350100004, 24.011222839000098],\n\t\t\t\t[93.61240441900009, 24.00905243000001],\n\t\t\t\t[93.58801314300007, 23.995228984000036],\n\t\t\t\t[93.58563602700008, 23.98729665100008],\n\t\t\t\t[93.58181197200008, 23.979596863],\n\t\t\t\t[93.57695438700006, 23.97300811800001],\n\t\t\t\t[93.57106327400004, 23.968021343000046],\n\t\t\t\t[93.5613481040001, 23.965695903000025],\n\t\t\t\t[93.55525028500006, 23.97099273700006],\n\t\t\t\t[93.54997928900013, 23.978020732000076],\n\t\t\t\t[93.54346805900013, 23.980888774000064],\n\t\t\t\t[93.52682824700014, 23.97538523300007],\n\t\t\t\t[93.49571903500009, 23.959132996000037],\n\t\t\t\t[93.47484175700009, 23.957505189000088],\n\t\t\t\t[93.45665165200006, 23.959959819000076],\n\t\t\t\t[93.44900354000009, 23.96892568],\n\t\t\t\t[93.44559289600005, 23.98161224400006],\n\t\t\t\t[93.4391850180001, 23.995228984000036],\n\t\t\t\t[93.40652551300013, 24.025847270000057],\n\t\t\t\t[93.39650028500012, 24.03752614400004],\n\t\t\t\t[93.36828495300006, 24.078479716000075],\n\t\t\t\t[93.34854455600009, 24.088892517000104],\n\t\t\t\t[93.32218957500004, 24.080055847],\n\t\t\t\t[93.30968387900003, 24.063984477000034],\n\t\t\t\t[93.30296594200013, 24.041143494000025],\n\t\t\t\t[93.30255946900013, 24.035774655000083],\n\t\t\t\t[93.30110559100012, 24.016571350000035],\n\t\t\t\t[93.30296594200013, 23.995280660000063],\n\t\t\t\t[93.30813358600011, 23.977503968000022],\n\t\t\t\t[93.31609175600005, 23.961096700000084],\n\t\t\t\t[93.33758915200013, 23.928411357000087],\n\t\t\t\t[93.34596073400007, 23.918696188000055],\n\t\t\t\t[93.35185184800008, 23.913916117000056],\n\t\t\t\t[93.35598596200003, 23.906991475000083],\n\t\t\t\t[93.3591899010001, 23.89094594300012],\n\t\t\t\t[93.35825972500004, 23.85526336700012],\n\t\t\t\t[93.37479618400005, 23.739017232000023],\n\t\t\t\t[93.4063188070001, 23.719121806000132],\n\t\t\t\t[93.41231327300011, 23.708709005000102],\n\t\t\t\t[93.42595585100014, 23.69080312100003],\n\t\t\t\t[93.43029667200011, 23.6803386430001],\n\t\t\t\t[93.43236372900009, 23.647317404000106],\n\t\t\t\t[93.40022098800011, 23.454021709000088],\n\t\t\t\t[93.3998075770001, 23.426090597000027],\n\t\t\t\t[93.4059053960001, 23.367670390000043],\n\t\t\t\t[93.4077657470001, 23.35637908900007],\n\t\t\t\t[93.40724898300004, 23.34725819900008],\n\t\t\t\t[93.40373498600007, 23.338757426000072],\n\t\t\t\t[93.38420129400009, 23.313125916000033],\n\t\t\t\t[93.37789676900007, 23.29682200100008],\n\t\t\t\t[93.37644982900008, 23.279484559000068],\n\t\t\t\t[93.38079065000005, 23.237264913],\n\t\t\t\t[93.37272912600008, 23.169827169000072],\n\t\t\t\t[93.37303918400005, 23.15422088700005],\n\t\t\t\t[93.37520959500006, 23.142154439000066],\n\t\t\t\t[93.37489953600004, 23.129726257000087],\n\t\t\t\t[93.33335168500008, 23.05228912300005],\n\t\t\t\t[93.31826216700006, 23.033659770000085],\n\t\t\t\t[93.29883182800006, 23.01795013400003],\n\t\t\t\t[93.27278690600008, 23.005909526000053],\n\t\t\t\t[93.24653527900006, 23.00448842400006],\n\t\t\t\t[93.22555464700008, 23.020378927000067],\n\t\t\t\t[93.21211877500014, 23.03988678000006],\n\t\t\t\t[93.19651249200007, 23.053839417000077],\n\t\t\t\t[93.17708215400012, 23.058438619000114],\n\t\t\t\t[93.15238081900009, 23.049937846000105],\n\t\t\t\t[93.14008182800006, 23.031902771000105],\n\t\t\t\t[93.13822147700006, 23.005263570000054],\n\t\t\t\t[93.14318241400008, 22.97751332600002],\n\t\t\t\t[93.15114058400007, 22.95622263600005],\n\t\t\t\t[93.17108768700007, 22.92043670700012],\n\t\t\t\t[93.17739221200009, 22.900205384000017],\n\t\t\t\t[93.17553186100008, 22.881705220000086],\n\t\t\t\t[93.16106246000004, 22.86098297200006],\n\t\t\t\t[93.12530236800012, 22.821553854000044],\n\t\t\t\t[93.11589725800007, 22.79840281200005],\n\t\t\t\t[93.11238326000012, 22.799953105000085],\n\t\t\t\t[93.07951704900012, 22.772719626000068],\n\t\t\t\t[93.07083540900004, 22.69287953700008],\n\t\t\t\t[93.07393599400007, 22.671898905000077],\n\t\t\t\t[93.08189416500005, 22.652830302000027],\n\t\t\t\t[93.10442509000006, 22.61593332900007],\n\t\t\t\t[93.11052290900011, 22.596347962000053],\n\t\t\t\t[93.10907596900012, 22.57469553600008],\n\t\t\t\t[93.09822391800009, 22.535266419000052],\n\t\t\t\t[93.09915409300004, 22.511960347000027],\n\t\t\t\t[93.10959273300006, 22.479042460000088],\n\t\t\t\t[93.11786096200012, 22.46286773700008],\n\t\t\t\t[93.15351770000012, 22.427521057],\n\t\t\t\t[93.16592004400007, 22.38659332300007],\n\t\t\t\t[93.17429162700006, 22.26939117400012],\n\t\t\t\t[93.17367150900009, 22.259417623000033],\n\t\t\t\t[93.16902063000003, 22.246911927000028],\n\t\t\t\t[93.16126916500008, 22.24251943000003],\n\t\t\t\t[93.15145064300003, 22.24096913700002],\n\t\t\t\t[93.12974654200013, 22.23161570200007],\n\t\t\t\t[93.12478560400007, 22.23228749600004],\n\t\t\t\t[93.12354537000004, 22.230685527],\n\t\t\t\t[93.12313195800004, 22.218386536000068],\n\t\t\t\t[93.14173547400009, 22.18727732400002],\n\t\t\t\t[93.11951460800009, 22.180972799000088],\n\t\t\t\t[93.10432173700013, 22.187173970000075],\n\t\t\t\t[93.09057580600012, 22.197147522000094],\n\t\t\t\t[93.07248905400007, 22.202470195000032],\n\t\t\t\t[93.04582401500005, 22.20686269100004],\n\t\t\t\t[93.03641890500006, 22.206242575000076],\n\t\t\t\t[93.02453332500005, 22.201901754000076],\n\t\t\t\t[93.02236291600008, 22.19621734600004],\n\t\t\t\t[93.02391320800007, 22.18882761700003],\n\t\t\t\t[93.02256962100012, 22.120976461000097],\n\t\t\t\t[93.0254635010001, 22.1129149370001],\n\t\t\t\t[93.00748010300003, 22.1059386190001],\n\t\t\t\t[92.99518111200007, 22.103251445000083],\n\t\t\t\t[92.98546594300012, 22.095965068000012],\n\t\t\t\t[92.9671724860001, 22.06268544600006],\n\t\t\t\t[92.96531213400004, 22.049559632000083],\n\t\t\t\t[92.96841272000012, 22.03617543500006],\n\t\t\t\t[92.97492395000006, 22.02330800400007],\n\t\t\t\t[92.97792118400008, 22.016486715000028],\n\t\t\t\t[92.97957482900006, 22.009355367000083],\n\t\t\t\t[92.97988488800013, 22.00227569600004],\n\t\t\t\t[92.97895471200007, 21.995351054000068],\n\t\t\t\t[92.97709436100007, 21.993025615000036],\n\t\t\t\t[92.97492395000006, 21.990906881000072],\n\t\t\t\t[92.96810266200004, 21.98723785400007],\n\t\t\t\t[92.9616947830001, 21.98687611900006],\n\t\t\t\t[92.95559696500004, 21.98961497],\n\t\t\t\t[92.95032596900006, 21.995351054000068],\n\t\t\t\t[92.93740686000007, 22.013024394000055],\n\t\t\t\t[92.92097375600014, 22.02180938700006],\n\t\t\t\t[92.90619429500009, 22.01731353800004],\n\t\t\t\t[92.89864953600005, 21.995402731000084],\n\t\t\t\t[92.88924442500007, 21.966722311000083],\n\t\t\t\t[92.87746219900009, 21.95700714200005],\n\t\t\t\t[92.86702356000006, 21.966515605000026],\n\t\t\t\t[92.8620626230001, 21.995402731000084],\n\t\t\t\t[92.85389774600009, 22.024134827000083],\n\t\t\t\t[92.83612105300006, 22.046510722000065],\n\t\t\t\t[92.77162886600013, 22.104181621000052],\n\t\t\t\t[92.7080668540001, 22.14795155800003],\n\t\t\t\t[92.68377893100006, 22.154307760000066],\n\t\t\t\t[92.67396040900007, 22.147073059],\n\t\t\t\t[92.67106652800004, 22.133895569000018],\n\t\t\t\t[92.6746838790001, 22.105576884000115],\n\t\t\t\t[92.67396040900007, 22.0952415980001],\n\t\t\t\t[92.6695162360001, 22.092657777000014],\n\t\t\t\t[92.66455529800004, 22.093846334000133],\n\t\t\t\t[92.66207482900006, 22.094776510000074],\n\t\t\t\t[92.65618371600004, 22.075294495],\n\t\t\t\t[92.65608036300006, 22.060566711],\n\t\t\t\t[92.65835412600006, 22.04656239800009],\n\t\t\t\t[92.65835412600006, 22.032816468000036],\n\t\t\t\t[92.65091272000012, 22.019173890000033],\n\t\t\t\t[92.63985396300012, 22.013386129000068],\n\t\t\t\t[92.6275549720001, 22.012352600000085],\n\t\t\t\t[92.61525598200006, 22.0087869260001],\n\t\t\t\t[92.60388716700004, 21.995402731000084],\n\t\t\t\t[92.59799605400008, 21.989304912000122],\n\t\t\t\t[92.59127811700006, 21.98424062200006],\n\t\t\t\t[92.58383671100012, 21.98031321200007],\n\t\t\t\t[92.57587854000013, 21.977574362000027],\n\t\t\t\t[92.57515507000005, 21.98656606100009],\n\t\t\t\t[92.57308801300007, 21.995402731000084],\n\t\t\t\t[92.55996219900004, 22.061341859],\n\t\t\t\t[92.5373279210001, 22.128624573000067],\n\t\t\t\t[92.54931685400004, 22.138494772000072],\n\t\t\t\t[92.56419966700008, 22.1383397420001],\n\t\t\t\t[92.57556848200005, 22.143300680000053],\n\t\t\t\t[92.57701542200004, 22.168673808000065],\n\t\t\t\t[92.51893111200008, 22.49537221300004],\n\t\t\t\t[92.51738081900004, 22.512580465],\n\t\t\t\t[92.50456506400008, 22.54379303000009],\n\t\t\t\t[92.50084436000009, 22.560536194000022],\n\t\t\t\t[92.50291141800011, 22.618620504000106],\n\t\t\t\t[92.49588342300012, 22.695618388000028],\n\t\t\t\t[92.49154260200004, 22.711069641000037],\n\t\t\t\t[92.48069055200011, 22.726159159000034],\n\t\t\t\t[92.45371545400008, 22.74796661400005],\n\t\t\t\t[92.44203658000009, 22.762926941000032],\n\t\t\t\t[92.4350085860001, 22.793286846000072],\n\t\t\t\t[92.42632694500003, 22.871059876000103],\n\t\t\t\t[92.4118575440001, 22.887932231],\n\t\t\t\t[92.37868127500008, 22.900437928000073],\n\t\t\t\t[92.35987105300006, 22.92661204000008],\n\t\t\t\t[92.3522229410001, 22.96033091300005],\n\t\t\t\t[92.3530497650001, 23.02991322800007],\n\t\t\t\t[92.3276249590001, 23.171429138000022],\n\t\t\t\t[92.32855513500004, 23.211194153000022],\n\t\t\t\t[92.3326892500001, 23.226257833000105],\n\t\t\t\t[92.35067264900005, 23.26098439500005],\n\t\t\t\t[92.35749393700013, 23.278941956000025],\n\t\t\t\t[92.35687382000003, 23.289122213],\n\t\t\t\t[92.3522229410001, 23.29883738200003],\n\t\t\t\t[92.3470552980001, 23.315425517000037],\n\t\t\t\t[92.34674523900009, 23.325295715000024],\n\t\t\t\t[92.34953576700013, 23.344958598000076],\n\t\t\t\t[92.34860559100008, 23.354105326000038],\n\t\t\t\t[92.34488488800008, 23.359117940000104],\n\t\t\t\t[92.33165572100012, 23.368652243],\n\t\t\t\t[92.32669478400004, 23.375266825],\n\t\t\t\t[92.32535119700009, 23.382165629000085],\n\t\t\t\t[92.32690149000013, 23.39601491300003],\n\t\t\t\t[92.32535119700009, 23.403507995000083],\n\t\t\t\t[92.31977014200004, 23.412163798000037],\n\t\t\t\t[92.30674768100005, 23.423868510000105],\n\t\t\t\t[92.30147668500007, 23.431800842000072],\n\t\t\t\t[92.29682580600013, 23.446580302000072],\n\t\t\t\t[92.29103804500005, 23.49528534000011],\n\t\t\t\t[92.25279748500009, 23.609309388],\n\t\t\t\t[92.25000695800003, 23.642614848000036],\n\t\t\t\t[92.26168583200007, 23.68511871300008],\n\t\t\t\t[92.25973660500011, 23.702640572000078],\n\t\t\t\t[92.25930871600013, 23.706486918000095],\n\t\t\t\t[92.23874149600005, 23.7168480430001],\n\t\t\t\t[92.22210168500004, 23.70777882900005],\n\t\t\t\t[92.20938928200007, 23.661605937],\n\t\t\t\t[92.19429976400005, 23.648144226000042],\n\t\t\t\t[92.18076053900012, 23.665378317000105],\n\t\t\t\t[92.17063195800006, 23.70364471400002],\n\t\t\t\t[92.15078820800005, 23.731653341000126],\n\t\t\t\t[92.10841353400014, 23.718243307000094],\n\t\t\t\t[92.09218713400003, 23.701345114],\n\t\t\t\t[92.05963098100005, 23.659487203000126],\n\t\t\t\t[92.04237105300007, 23.64556040500004],\n\t\t\t\t[92.01901330600003, 23.640056865000034],\n\t\t\t\t[92.00351037700005, 23.647420757000035],\n\t\t\t\t[91.96165246600009, 23.691139018000015],\n\t\t\t\t[91.94914677000008, 23.709768372000084],\n\t\t\t\t[91.93664107300009, 23.723540141000043],\n\t\t\t\t[91.9226884360001, 23.72297170000006],\n\t\t\t\t[91.91648726400007, 23.7098717250001],\n\t\t\t\t[91.91442020700003, 23.68832265300007],\n\t\t\t\t[91.91597050000007, 23.650159607000077],\n\t\t\t\t[91.94232548000008, 23.534430237000052],\n\t\t\t\t[91.94077518800009, 23.495181986000077],\n\t\t\t\t[91.91814091000003, 23.459938660000105],\n\t\t\t\t[91.9051184490001, 23.446631979000088],\n\t\t\t\t[91.88909875500013, 23.43593495800009],\n\t\t\t\t[91.83380497300004, 23.413894959000103],\n\t\t\t\t[91.81768192600003, 23.40092417400008],\n\t\t\t\t[91.79163700400005, 23.368342183000024],\n\t\t\t\t[91.7625948490001, 23.321549174],\n\t\t\t\t[91.74368127400004, 23.27232737300004],\n\t\t\t\t[91.74915897700004, 23.232407329000083],\n\t\t\t\t[91.76393843600005, 23.200626323000037],\n\t\t\t\t[91.77902795400013, 23.131767476000036],\n\t\t\t\t[91.79194706200013, 23.101149190000015],\n\t\t\t\t[91.79556441200003, 23.08949615500005],\n\t\t\t\t[91.7913269450001, 23.080375265000086],\n\t\t\t\t[91.77623742700007, 23.065259909000062],\n\t\t\t\t[91.77375695800004, 23.06489817300006],\n\t\t\t\t[91.76424849400013, 23.065647481000084],\n\t\t\t\t[91.76094120300013, 23.065492453000033],\n\t\t\t\t[91.75598026500006, 23.061539206000063],\n\t\t\t\t[91.75556685400005, 23.05683665000008],\n\t\t\t\t[91.75629032400008, 23.052159933000027],\n\t\t\t\t[91.75505009000011, 23.048232524000056],\n\t\t\t\t[91.73830692600006, 23.02466807100005],\n\t\t\t\t[91.73127893100008, 23.017330018000038],\n\t\t\t\t[91.7144324140001, 23.00311899800009],\n\t\t\t\t[91.70699100800005, 22.995367534000067],\n\t\t\t\t[91.69469201700014, 22.98813283300011],\n\t\t\t\t[91.66761356600006, 22.982629293000016],\n\t\t\t\t[91.65407434100007, 22.978055929000064],\n\t\t\t\t[91.64694299300004, 22.97658315000008],\n\t\t\t\t[91.63991499800005, 22.978004253000066],\n\t\t\t\t[91.63278365100012, 22.98030385300008],\n\t\t\t\t[91.62575565600008, 22.98154408800012],\n\t\t\t\t[91.61666060400012, 22.978055929000064],\n\t\t\t\t[91.61200972500006, 22.969839376000053],\n\t\t\t\t[91.60828902200006, 22.96033091300005],\n\t\t\t\t[91.60239790900005, 22.95296702100005],\n\t\t\t\t[91.58606815600012, 22.94446624800004],\n\t\t\t\t[91.58296757000005, 22.94790273100007],\n\t\t\t\t[91.5830709230001, 22.957798767000057],\n\t\t\t\t[91.57676639900006, 22.96880584800006],\n\t\t\t\t[91.5631238200001, 22.974981181000132],\n\t\t\t\t[91.54979130000004, 22.977229106000053],\n\t\t\t\t[91.53656213400006, 22.981854146],\n\t\t\t\t[91.52364302600006, 22.995212504000037],\n\t\t\t\t[91.51940555800007, 23.005625305000066],\n\t\t\t\t[91.51816532400005, 23.03508087200008],\n\t\t\t\t[91.51558150200009, 23.03880157500008],\n\t\t\t\t[91.50607303900006, 23.041178691000127],\n\t\t\t\t[91.50328251200011, 23.0444084680001],\n\t\t\t\t[91.49811486900012, 23.069962464000056],\n\t\t\t\t[91.47506717900006, 23.14308461500012],\n\t\t\t\t[91.47041630100011, 23.153290711000082],\n\t\t\t\t[91.46359501200004, 23.184115702000057],\n\t\t\t\t[91.46121789600011, 23.184425761000043],\n\t\t\t\t[91.44643843600005, 23.1978874710001],\n\t\t\t\t[91.44540490800011, 23.203029277],\n\t\t\t\t[91.44674849500007, 23.20879119900006],\n\t\t\t\t[91.44643843600005, 23.215534973],\n\t\t\t\t[91.43992720500012, 23.223518983000062],\n\t\t\t\t[91.43961714700004, 23.22264048200013],\n\t\t\t\t[91.43620650200012, 23.215715841000062],\n\t\t\t\t[91.43651656100008, 23.214863180000023],\n\t\t\t\t[91.42814498000013, 23.229513449000095],\n\t\t\t\t[91.41357222500005, 23.248633728000087],\n\t\t\t\t[91.39434859200003, 23.2626638790001],\n\t\t\t\t[91.37212772600009, 23.261888733000077],\n\t\t\t\t[91.36096561700003, 23.247522685],\n\t\t\t\t[91.35569462100011, 23.224139099000027],\n\t\t\t\t[91.35590132700008, 23.17964569100006],\n\t\t\t\t[91.37460819500006, 23.095723165000052],\n\t\t\t\t[91.37088749200007, 23.06277944],\n\t\t\t\t[91.33740116400003, 23.071073507000037],\n\t\t\t\t[91.31352665200006, 23.101045838000076],\n\t\t\t\t[91.30050419200012, 23.14230946900001],\n\t\t\t\t[91.27724979600009, 23.303255717000027],\n\t\t\t\t[91.27290897700004, 23.313487651000017],\n\t\t\t\t[91.26753462700009, 23.321549174],\n\t\t\t\t[91.26577762900007, 23.329352315000037],\n\t\t\t\t[91.27290897700004, 23.338499044000017],\n\t\t\t\t[91.28293420400007, 23.34764577300008],\n\t\t\t\t[91.28727502500004, 23.35555226700005],\n\t\t\t\t[91.28396773300005, 23.36144338000004],\n\t\t\t\t[91.27094527200006, 23.3645956430001],\n\t\t\t\t[91.2581295170001, 23.37363901800005],\n\t\t\t\t[91.24789758300005, 23.393766989000127],\n\t\t\t\t[91.23446171100005, 23.436270854000085],\n\t\t\t\t[91.22970747900007, 23.461178894000042],\n\t\t\t\t[91.22733036300014, 23.4687753300001],\n\t\t\t\t[91.22081913300008, 23.47789622000009],\n\t\t\t\t[91.20335249900012, 23.487921448000108],\n\t\t\t\t[91.19508426900006, 23.495181986000077],\n\t\t\t\t[91.1858858650001, 23.511563416000044],\n\t\t\t\t[91.17751428300011, 23.544274597000125],\n\t\t\t\t[91.16986617000003, 23.561973776000045],\n\t\t\t\t[91.14082401500013, 23.61209991500006],\n\t\t\t\t[91.13627648900012, 23.629514872000087],\n\t\t\t\t[91.13968713400004, 23.65357025100012],\n\t\t\t\t[91.15229618400014, 23.655094707000032],\n\t\t\t\t[91.1664555260001, 23.654087016000048],\n\t\t\t\t[91.1752405200001, 23.67031341600007],\n\t\t\t\t[91.16893599500008, 23.685377096000067],\n\t\t\t\t[91.15239953700006, 23.691009827000087],\n\t\t\t\t[91.13658654800008, 23.698890483000028],\n\t\t\t\t[91.13234908000004, 23.720646261000056],\n\t\t\t\t[91.14175419100008, 23.73989573200008],\n\t\t\t\t[91.15756717900007, 23.744985861000046],\n\t\t\t\t[91.17658410700005, 23.746536154000083],\n\t\t\t\t[91.19498091600013, 23.755166118000105],\n\t\t\t\t[91.20521285000012, 23.77157338500008],\n\t\t\t\t[91.2252633060001, 23.82614369800011],\n\t\t\t\t[91.22815718600009, 23.844979757000104],\n\t\t\t\t[91.22402307100003, 23.857485453000024],\n\t\t\t\t[91.2127576090001, 23.880739848000033],\n\t\t\t\t[91.21193078600004, 23.89445994100008],\n\t\t\t\t[91.21627160700012, 23.90838673900005],\n\t\t\t\t[91.25037805200003, 23.96404225700006],\n\t\t\t\t[91.26092004400004, 23.97727142400008],\n\t\t\t\t[91.27414921100006, 23.988226827000048],\n\t\t\t\t[91.29161584500008, 23.994815573000025],\n\t\t\t\t[91.30494836400004, 23.993859558000068],\n\t\t\t\t[91.30843257700013, 23.992501035000103],\n\t\t\t\t[91.31621382700007, 23.989467062000088],\n\t\t\t\t[91.32706587800004, 23.987865092000035],\n\t\t\t\t[91.3390548100001, 23.995228984000036],\n\t\t\t\t[91.34928674300005, 24.036053366000132],\n\t\t\t\t[91.35083703600009, 24.074242249000022],\n\t\t\t\t[91.36303267500011, 24.099847921000062],\n\t\t\t\t[91.40458052600007, 24.103129374000062],\n\t\t\t\t[91.48044152900013, 24.088014018000067],\n\t\t\t\t[91.51754520700007, 24.085197652000076],\n\t\t\t\t[91.55867964700008, 24.089667663000014],\n\t\t\t\t[91.58183068900007, 24.096101380000064],\n\t\t\t\t[91.59650679500004, 24.104989726000056],\n\t\t\t\t[91.60601525900012, 24.11886484800003],\n\t\t\t\t[91.61376672300014, 24.140103862],\n\t\t\t\t[91.62451542100007, 24.203459168000037],\n\t\t\t\t[91.62906294800007, 24.21531890900006],\n\t\t\t\t[91.63950158700004, 24.211701559000076],\n\t\t\t\t[91.65717492700003, 24.17136810400011],\n\t\t\t\t[91.66616662600006, 24.155916850000025],\n\t\t\t\t[91.68415002500006, 24.145478211000082],\n\t\t\t\t[91.70368371600006, 24.14294606500009],\n\t\t\t\t[91.72115035100012, 24.148992208000024],\n\t\t\t\t[91.73262251800003, 24.164314270000077],\n\t\t\t\t[91.73200240000006, 24.181677551000107],\n\t\t\t\t[91.72580122900007, 24.202063904000042],\n\t\t\t\t[91.72301070200012, 24.22097747800008],\n\t\t\t\t[91.73293257600011, 24.234284159000097],\n\t\t\t\t[91.79659794100013, 24.221597595000063],\n\t\t\t\t[91.80703658100003, 24.221132507000036],\n\t\t\t\t[91.8097237550001, 24.214543763000037],\n\t\t\t\t[91.81137740100013, 24.192038676000024],\n\t\t\t\t[91.81375451700006, 24.183124492],\n\t\t\t\t[91.84424361200007, 24.155322571000042],\n\t\t\t\t[91.86450077300009, 24.15059417700006],\n\t\t\t\t[91.87710982300007, 24.158035584000075],\n\t\t\t\t[91.88434452300004, 24.17555389500005],\n\t\t\t\t[91.90594527200011, 24.260639140000066],\n\t\t\t\t[91.90687544800005, 24.28035369900003],\n\t\t\t\t[91.89643680900014, 24.32011871400003],\n\t\t\t\t[91.89984745300006, 24.338050435000085],\n\t\t\t\t[91.92186161300003, 24.34450999000005],\n\t\t\t\t[91.93095666500011, 24.336965231000093],\n\t\t\t\t[91.95307417800012, 24.322986755],\n\t\t\t\t[91.97219445900004, 24.316062114000104],\n\t\t\t\t[91.97136763500009, 24.329678853000118],\n\t\t\t\t[91.94883671100007, 24.363526917000016],\n\t\t\t\t[91.9499735920001, 24.37538665800004],\n\t\t\t\t[92.03337935400003, 24.368849590000067],\n\t\t\t\t[92.06273156800012, 24.37102],\n\t\t\t\t[92.08825972500006, 24.38163950700003],\n\t\t\t\t[92.10758671100012, 24.40597910600006],\n\t\t\t\t[92.11120406100008, 24.43429779100005],\n\t\t\t\t[92.10593306500004, 24.495250143000092],\n\t\t\t\t[92.11089400300011, 24.514292908000087],\n\t\t\t\t[92.12319299300003, 24.525377503000087],\n\t\t\t\t[92.13859257000013, 24.533723246000065],\n\t\t\t\t[92.14997986200007, 24.54218295400004],\n\t\t\t\t[92.1531653240001, 24.54454945900001],\n\t\t\t\t[92.16360396300013, 24.55919972800008],\n\t\t\t\t[92.16887496000004, 24.574315084000077],\n\t\t\t\t[92.1734224860001, 24.60839569200006],\n\t\t\t\t[92.18293094900008, 24.647256368000015],\n\t\t\t\t[92.23378055900008, 24.777532654000098],\n\t\t\t\t[92.23646773300004, 24.793035584],\n\t\t\t\t[92.23688114400005, 24.808590190000032],\n\t\t\t\t[92.23502079300005, 24.824764914000028],\n\t\t\t\t[92.23492786100007, 24.82499071000008],\n\t\t\t\t[92.22179162600014, 24.856907654000068],\n\t\t\t\t[92.22175905800003, 24.857046883000052],\n\t\t\t\t[92.21765751100003, 24.874580994000084],\n\t\t\t\t[92.2230318610001, 24.89137583400013],\n\t\t\t\t[92.2521773680001, 24.902977194000087],\n\t\t\t\t[92.29024450000003, 24.891351286000045],\n\t\t\t\t[92.29041792900011, 24.891298320000104],\n\t\t\t\t[92.35814605200005, 24.853748899000024],\n\t\t\t\t[92.35832076000014, 24.853652039000096],\n\t\t\t\t[92.35932057700006, 24.84642836600004],\n\t\t\t\t[92.35935428900012, 24.846184794000052],\n\t\t\t\t[92.36350740900014, 24.841120014000026],\n\t\t\t\t[92.36359175600006, 24.84101715100006],\n\t\t\t\t[92.37092980900007, 24.837916565000015],\n\t\t\t\t[92.38074833200005, 24.836702169000077],\n\t\t\t\t[92.44203658000009, 24.855409037000058],\n\t\t\t\t[92.47769331900008, 24.863909810000067],\n\t\t\t\t[92.49154260200004, 24.883727722000046],\n\t\t\t\t[92.49453983600006, 24.894863993000072],\n\t\t\t\t[92.49133589700006, 24.91227895100012],\n\t\t\t\t[92.49126714800008, 24.912424218000055],\n\t\t\t\t[92.48379113800013, 24.92822113000004],\n\t\t\t\t[92.4743860270001, 24.93667022800004],\n\t\t\t\t[92.4742723330001, 24.936715371000062],\n\t\t\t\t[92.4497880460001, 24.946437073000098],\n\t\t\t\t[92.45002848600006, 24.94663618700004],\n\t\t\t\t[92.45805627500005, 24.953284201000045],\n\t\t\t\t[92.45782812800007, 24.953557685000035],\n\t\t\t\t[92.45402551300003, 24.95811594700008],\n\t\t\t\t[92.45376877000012, 24.9582310630001],\n\t\t\t\t[92.44451704900007, 24.96237925200002],\n\t\t\t\t[92.44444627300004, 24.962427197000082],\n\t\t\t\t[92.41247766200007, 24.98408335400002],\n\t\t\t\t[92.41246032100014, 24.98436081700008],\n\t\t\t\t[92.4122709560001, 24.987390646000037],\n\t\t\t\t[92.41213950000014, 24.987434336],\n\t\t\t\t[92.41186000600004, 24.987527227000058],\n\t\t\t\t[92.39470096900004, 24.993230082000096],\n\t\t\t\t[92.38694950400003, 24.99509043400012],\n\t\t\t\t[92.38692635100006, 24.99520183],\n\t\t\t\t[92.38687592400004, 24.9954444560001],\n\t\t\t\t[92.38493703500006, 25.004773236000048],\n\t\t\t\t[92.38105839100012, 25.02343495700002],\n\t\t\t\t[92.35625370300005, 25.037000021],\n\t\t\t\t[92.32814172400003, 25.048007101000096],\n\t\t\t\t[92.31212203000007, 25.0686001590001],\n\t\t\t\t[92.30354374200004, 25.07428456600003],\n\t\t\t\t[92.25155725100012, 25.080795797000107],\n\t\t\t\t[92.2336772060001, 25.08495575000005],\n\t\t\t\t[92.22013798000012, 25.090381775000097],\n\t\t\t\t[92.20804569500012, 25.098107401],\n\t\t\t\t[92.19409305900012, 25.109166159000026],\n\t\t\t\t[92.17921024600008, 25.126684469000068],\n\t\t\t\t[92.17269901600008, 25.131955465000104],\n\t\t\t\t[92.16474084500004, 25.133557434000053],\n\t\t\t\t[92.15099491400008, 25.129733379000086],\n\t\t\t\t[92.14551721200013, 25.13169708200003],\n\t\t\t\t[92.13859257000013, 25.136399638000015],\n\t\t\t\t[92.12412316900003, 25.136968079000056],\n\t\t\t\t[92.11616499900003, 25.139448548000033],\n\t\t\t\t[92.11037723800007, 25.144874573000024],\n\t\t\t\t[92.1004553630001, 25.159085592000068],\n\t\t\t\t[92.09291060400011, 25.164718323],\n\t\t\t\t[92.06603886000005, 25.174536845000077],\n\t\t\t\t[92.03399947100013, 25.181668193000107],\n\t\t\t\t[92.00175337700006, 25.18296010400006],\n\t\t\t\t[91.97508833800003, 25.175363668],\n\t\t\t\t[91.95627811700012, 25.169782613000066],\n\t\t\t\t[91.90057092300009, 25.177585754000106],\n\t\t\t\t[91.79370406100003, 25.16533844000007],\n\t\t\t\t[91.74533492100011, 25.169369202000055],\n\t\t\t\t[91.73014204900005, 25.167457174000063],\n\t\t\t\t[91.72373417200004, 25.161927796000057],\n\t\t\t\t[91.71773970600009, 25.149835511000063],\n\t\t\t\t[91.7107117110001, 25.14466786800007],\n\t\t\t\t[91.70182336400006, 25.14714833600003],\n\t\t\t\t[91.68890425700005, 25.15298777300002],\n\t\t\t\t[91.67743208800005, 25.152626038000037],\n\t\t\t\t[91.67226444500005, 25.13650299100003],\n\t\t\t\t[91.66203251100006, 25.127201233],\n\t\t\t\t[91.63867476400003, 25.12404897100005],\n\t\t\t\t[91.61314660700009, 25.12513417600006],\n\t\t\t\t[91.59619673700007, 25.128906555000086],\n\t\t\t\t[91.5801770430001, 25.140895488000027],\n\t\t\t\t[91.57345910700008, 25.152264302000034],\n\t\t\t\t[91.56612105300007, 25.15996409100002],\n\t\t\t\t[91.5487577720001, 25.161100973000103],\n\t\t\t\t[91.54017948400013, 25.157638652000074],\n\t\t\t\t[91.52343632100008, 25.145184632000095],\n\t\t\t\t[91.51165409400011, 25.14249745700006],\n\t\t\t\t[91.50090539600006, 25.14115387],\n\t\t\t\t[91.4807515870001, 25.135262757000092],\n\t\t\t\t[91.47103641800004, 25.133919170000027],\n\t\t\t\t[91.43186568300013, 25.137949931000023],\n\t\t\t\t[91.28396773300005, 25.178981018000073],\n\t\t\t\t[91.23570194500013, 25.201925354000096],\n\t\t\t\t[91.22495324700009, 25.201615296000043],\n\t\t\t\t[91.20314579300009, 25.191331686000026],\n\t\t\t\t[91.19084680200012, 25.189471334000032],\n\t\t\t\t[91.13534631400006, 25.191228333000097],\n\t\t\t\t[90.97514937400013, 25.167818909000047],\n\t\t\t\t[90.9434200450001, 25.15743194600013],\n\t\t\t\t[90.93482138600007, 25.156359858000044],\n\t\t\t\t[90.82198042800007, 25.142290752000108],\n\t\t\t\t[90.7939718020001, 25.14539133700005],\n\t\t\t\t[90.77939904800013, 25.151954244000038],\n\t\t\t\t[90.76689335100014, 25.16053253200006],\n\t\t\t\t[90.75397424300013, 25.167560527000077],\n\t\t\t\t[90.73795454900005, 25.16942087900007],\n\t\t\t\t[90.73268355400006, 25.16688873300008],\n\t\t\t\t[90.72203820800007, 25.15660512300009],\n\t\t\t\t[90.71635380000009, 25.153556214000062],\n\t\t\t\t[90.70767216000013, 25.15298777300002],\n\t\t\t\t[90.67056848100009, 25.158775533],\n\t\t\t\t[90.64896773300012, 25.167818909000047],\n\t\t\t\t[90.6375989180001, 25.171074524000048],\n\t\t\t\t[90.62343957500008, 25.171436259000032],\n\t\t\t\t[90.58333866400005, 25.16203114900007],\n\t\t\t\t[90.50137984200012, 25.168800761000014],\n\t\t\t\t[90.39978397700008, 25.149008687000034],\n\t\t\t\t[90.36464400300014, 25.149990540000104],\n\t\t\t\t[90.28692264800003, 25.180066223000082],\n\t\t\t\t[90.13008467700013, 25.211588847000044],\n\t\t\t\t[89.90813440000011, 25.29690663700002],\n\t\t\t\t[89.87020389800011, 25.29556305000007],\n\t\t\t\t[89.83459883600011, 25.282437236000092],\n\t\t\t\t[89.81904423000009, 25.284969381000067],\n\t\t\t\t[89.80736535600005, 25.304503073],\n\t\t\t\t[89.79852868700004, 25.340056458000035],\n\t\t\t\t[89.79501469000007, 25.374162903000112],\n\t\t\t\t[89.79923403500004, 25.402892809000022],\n\t\t\t\t[89.80069909700012, 25.41286855100013],\n\t\t\t\t[89.80856794000005, 25.439507112000015],\n\t\t\t\t[89.82323002100003, 25.489142965000056],\n\t\t\t\t[89.82509037300014, 25.56448720300004],\n\t\t\t\t[89.83439213000008, 25.63476715100002],\n\t\t\t\t[89.82421187300008, 25.674092916000106],\n\t\t\t\t[89.80152592000013, 25.72468414400005],\n\t\t\t\t[89.78312911000006, 25.81444610700005],\n\t\t\t\t[89.7869531660001, 25.839147441000065],\n\t\t\t\t[89.83005131100009, 25.90798044900005],\n\t\t\t\t[89.83439213000008, 25.931751608000113],\n\t\t\t\t[89.82643396000003, 25.937487691000072],\n\t\t\t\t[89.81072432500014, 25.938779603000015],\n\t\t\t\t[89.79201745600005, 25.94911488900003],\n\t\t\t\t[89.81155114700005, 25.955212708000076],\n\t\t\t\t[89.82560713700008, 25.965703024000035],\n\t\t\t\t[89.82865604700004, 25.979397278000064],\n\t\t\t\t[89.8152718500001, 25.99510691300013],\n\t\t\t\t[89.81413496900007, 25.99614044200011],\n\t\t\t\t[89.81268802900007, 25.996347148000055],\n\t\t\t\t[89.81103438300005, 25.99603708900007],\n\t\t\t\t[89.80932906100008, 25.995210266000058],\n\t\t\t\t[89.80917403100011, 25.99510691300013],\n\t\t\t\t[89.80886397300003, 25.99510691300013],\n\t\t\t\t[89.80204268400007, 25.98864736000006],\n\t\t\t\t[89.79553145400013, 25.985960185000053],\n\t\t\t\t[89.78943363500014, 25.9879755650001],\n\t\t\t\t[89.78395593200008, 25.99510691300013],\n\t\t\t\t[89.77641117400003, 26.008232727000077],\n\t\t\t\t[89.75584395400011, 26.032417297000066],\n\t\t\t\t[89.75021122300012, 26.041564026000046],\n\t\t\t\t[89.74871260600008, 26.05903066000009],\n\t\t\t\t[89.75114139900006, 26.071536357000085],\n\t\t\t\t[89.74984948700012, 26.08388702400005],\n\t\t\t\t[89.73672367300003, 26.100578511],\n\t\t\t\t[89.72876550300009, 26.114169413000084],\n\t\t\t\t[89.72432133000007, 26.130654195000048],\n\t\t\t\t[89.7184818930001, 26.14553700800009],\n\t\t\t\t[89.70654463700004, 26.154166972000056],\n\t\t\t\t[89.69765629100004, 26.154787089000095],\n\t\t\t\t[89.67770918800011, 26.153133443000073],\n\t\t\t\t[89.6703711340001, 26.15411529600003],\n\t\t\t\t[89.65817549700012, 26.159231262000034],\n\t\t\t\t[89.65579838100007, 26.161298320000085],\n\t\t\t\t[89.65724532100006, 26.165380758000097],\n\t\t\t\t[89.6578286080001, 26.18717448300005],\n\t\t\t\t[89.65838220200004, 26.207858785000028],\n\t\t\t\t[89.65300785400007, 26.222689921000054],\n\t\t\t\t[89.63492110200008, 26.22584218300001],\n\t\t\t\t[89.61332035300012, 26.219382629000066],\n\t\t\t\t[89.60639571100012, 26.2110110470001],\n\t\t\t\t[89.60846276900008, 26.180676982000037],\n\t\t\t\t[89.61528405800004, 26.169101461000096],\n\t\t\t\t[89.6144055580001, 26.164192200000073],\n\t\t\t\t[89.59399336800004, 26.16972157800008],\n\t\t\t\t[89.58675866700008, 26.169204814000025],\n\t\t\t\t[89.57993737800012, 26.166104228000094],\n\t\t\t\t[89.57342614800007, 26.16072987900013],\n\t\t\t\t[89.56278080300007, 26.142591452000104],\n\t\t\t\t[89.56939538600005, 26.130085754],\n\t\t\t\t[89.58577681500003, 26.122902731000053],\n\t\t\t\t[89.60422530100004, 26.120732320000073],\n\t\t\t\t[89.59254642800005, 26.113962708000102],\n\t\t\t\t[89.57787032100009, 26.107244771000083],\n\t\t\t\t[89.56691491700008, 26.098976543000063],\n\t\t\t\t[89.56701827000012, 26.087090963000023],\n\t\t\t\t[89.57694014500004, 26.082646790000112],\n\t\t\t\t[89.5907894290001, 26.085023906000046],\n\t\t\t\t[89.60386356700013, 26.084662171000062],\n\t\t\t\t[89.61135664900007, 26.072208150000066],\n\t\t\t\t[89.60288171400009, 26.055258280000075],\n\t\t\t\t[89.55916345200006, 26.02223704],\n\t\t\t\t[89.55068851700008, 25.995055237000102],\n\t\t\t\t[89.55182539900011, 25.98151601200003],\n\t\t\t\t[89.54908654800005, 25.96885528600008],\n\t\t\t\t[89.54169681900004, 25.959708558],\n\t\t\t\t[89.52841597500003, 25.957124735000022],\n\t\t\t\t[89.51818404200003, 25.96208567400005],\n\t\t\t\t[89.50945072500008, 25.97262766500002],\n\t\t\t\t[89.49534305900005, 25.995055237000102],\n\t\t\t\t[89.49064050300007, 25.997329],\n\t\t\t\t[89.4856278900001, 25.998724263000028],\n\t\t\t\t[89.48061527500005, 25.999241028000043],\n\t\t\t\t[89.42640669700012, 25.995055237000102],\n\t\t\t\t[89.42635502100012, 25.994951884000088],\n\t\t\t\t[89.42118737800007, 25.993194885000023],\n\t\t\t\t[89.41612308700013, 25.992626444000066],\n\t\t\t\t[89.4112655030001, 25.993194885000023],\n\t\t\t\t[89.40661462500003, 25.995055237000102],\n\t\t\t\t[89.39142175300003, 26.015467428000065],\n\t\t\t\t[89.37974287900005, 26.015312399000024],\n\t\t\t\t[89.3677539470001, 26.005442200000047],\n\t\t\t\t[89.35147587100005, 25.996863912000023],\n\t\t\t\t[89.33530114700005, 25.998569235000062],\n\t\t\t\t[89.31514733900008, 26.006785787000084],\n\t\t\t\t[89.29690555800005, 26.0181546030001],\n\t\t\t\t[89.27297937100013, 26.043476054000067],\n\t\t\t\t[89.23763269000011, 26.058100484000036],\n\t\t\t\t[89.22926110800006, 26.067195537000103],\n\t\t\t\t[89.22305993600008, 26.086574198000065],\n\t\t\t\t[89.21262129800004, 26.098976543000063],\n\t\t\t\t[89.19784183700011, 26.107709859000025],\n\t\t\t\t[89.13159265100012, 26.133754781],\n\t\t\t\t[89.11919030800004, 26.1466222130001],\n\t\t\t\t[89.11169722500011, 26.16450225900006],\n\t\t\t\t[89.10337732000005, 26.22517039000003],\n\t\t\t\t[89.09588423700012, 26.24103505500004],\n\t\t\t\t[89.07588545700008, 26.271059062000106],\n\t\t\t\t[89.06942590300014, 26.287388815000057],\n\t\t\t\t[89.0688574620001, 26.314260559000033],\n\t\t\t\t[89.0803296310001, 26.315604146000013],\n\t\t\t\t[89.09479903200014, 26.30950632700005],\n\t\t\t\t[89.10353234900009, 26.313692118000077],\n\t\t\t\t[89.10291223200011, 26.327334696],\n\t\t\t\t[89.09572920800008, 26.33451772100004],\n\t\t\t\t[89.07185469600006, 26.34061554],\n\t\t\t\t[89.05521488500005, 26.347023417000045],\n\t\t\t\t[89.05407800300003, 26.353948059000018],\n\t\t\t\t[89.05728194200003, 26.362629700000085],\n\t\t\t\t[89.05263106300004, 26.374618632000036],\n\t\t\t\t[89.04374271700004, 26.381078186000096],\n\t\t\t\t[89.02178023300007, 26.38624582900009],\n\t\t\t\t[89.01087650500011, 26.390173239000077],\n\t\t\t\t[89.00178145400014, 26.397149557000077],\n\t\t\t\t[88.98653690600008, 26.4127041630001],\n\t\t\t\t[88.97532312000004, 26.417871806000093],\n\t\t\t\t[88.95930342700012, 26.428568828],\n\t\t\t\t[88.95015669700012, 26.436940410000076],\n\t\t\t\t[88.94100996900005, 26.439420878000064],\n\t\t\t\t[88.92457686400007, 26.43213450100008],\n\t\t\t\t[88.91196781400004, 26.421230774000023],\n\t\t\t\t[88.89946211800003, 26.40448761000006],\n\t\t\t\t[88.89124556500013, 26.38578074100006],\n\t\t\t\t[88.89186568200006, 26.368779196000062],\n\t\t\t\t[88.91243290200009, 26.348935445000066],\n\t\t\t\t[88.94121667500008, 26.340098775000072],\n\t\t\t\t[88.96602136200005, 26.328471578000105],\n\t\t\t\t[88.97532312000004, 26.29994618800005],\n\t\t\t\t[88.9817309980001, 26.291832987000063],\n\t\t\t\t[88.98968916900009, 26.289404195000074],\n\t\t\t\t[88.99862919200007, 26.291522929000067],\n\t\t\t\t[89.00798262600011, 26.29715566],\n\t\t\t\t[89.00436527500005, 26.275709941000073],\n\t\t\t\t[89.01159997600013, 26.2691987110001],\n\t\t\t\t[89.02353723100003, 26.2688369750001],\n\t\t\t\t[89.03433760600007, 26.26578806600007],\n\t\t\t\t[89.03971195500003, 26.24718455000003],\n\t\t\t\t[89.01945479300014, 26.23447214800005],\n\t\t\t\t[88.97532312000004, 26.22434356700002],\n\t\t\t\t[88.94684940600013, 26.232921855000043],\n\t\t\t\t[88.90271773300003, 26.272919414000015],\n\t\t\t\t[88.8757943110001, 26.27736358600002],\n\t\t\t\t[88.85564050400012, 26.2651162720001],\n\t\t\t\t[88.84065433800009, 26.2320433550001],\n\t\t\t\t[88.82484134900005, 26.22656565400011],\n\t\t\t\t[88.80799483200008, 26.23343861900007],\n\t\t\t\t[88.7984863690001, 26.247649638000055],\n\t\t\t\t[88.79202681500004, 26.264599508000046],\n\t\t\t\t[88.78401696800006, 26.27994740900003],\n\t\t\t\t[88.74794681800006, 26.292504782000023],\n\t\t\t\t[88.6634041750001, 26.26444447900009],\n\t\t\t\t[88.64583418800004, 26.27601999900004],\n\t\t\t\t[88.65327559400004, 26.283099671000073],\n\t\t\t\t[88.69012089100005, 26.299842835000035],\n\t\t\t\t[88.70298832200007, 26.309661357],\n\t\t\t\t[88.71223840300007, 26.328264872000048],\n\t\t\t\t[88.70970625900009, 26.34061554],\n\t\t\t\t[88.69627038600004, 26.350279032000046],\n\t\t\t\t[88.67337772700012, 26.360717672000064],\n\t\t\t\t[88.66743493700011, 26.36815907800009],\n\t\t\t\t[88.66852014200009, 26.385729065000064],\n\t\t\t\t[88.66107873600009, 26.388881328000124],\n\t\t\t\t[88.6522420660001, 26.39151682600003],\n\t\t\t\t[88.64986495000005, 26.3983897910001],\n\t\t\t\t[88.65193200700008, 26.407071432000052],\n\t\t\t\t[88.65627282700007, 26.41513295500006],\n\t\t\t\t[88.63301843300013, 26.4200938930001],\n\t\t\t\t[88.62237308800007, 26.424538066000096],\n\t\t\t\t[88.6115210370001, 26.43084259100003],\n\t\t\t\t[88.60356286700005, 26.44019602500005],\n\t\t\t\t[88.59787845900007, 26.451461487000117],\n\t\t\t\t[88.59116052200005, 26.46122833300008],\n\t\t\t\t[88.57917159000004, 26.466034241000088],\n\t\t\t\t[88.55798425300009, 26.465724182000102],\n\t\t\t\t[88.54976770000013, 26.466654358000042],\n\t\t\t\t[88.52682336400011, 26.475387676000125],\n\t\t\t\t[88.50682458500006, 26.487634989000057],\n\t\t\t\t[88.49865970900004, 26.4948696900001],\n\t\t\t\t[88.48791101100011, 26.50577341800009],\n\t\t\t\t[88.47540531400011, 26.514971823000067],\n\t\t\t\t[88.46238285300007, 26.528821106000052],\n\t\t\t\t[88.44646651200009, 26.53553904300007],\n\t\t\t\t[88.41101648000011, 26.545099182000072],\n\t\t\t\t[88.39789066600008, 26.558690084000048],\n\t\t\t\t[88.39499678600009, 26.578378805000014],\n\t\t\t\t[88.39592696100004, 26.599566142000057],\n\t\t\t\t[88.39437666800012, 26.61801462800007],\n\t\t\t\t[88.38528161700003, 26.623544007000064],\n\t\t\t\t[88.37251753700008, 26.611606751000025],\n\t\t\t\t[88.36027022300004, 26.59310658800011],\n\t\t\t\t[88.35282881700005, 26.578688864000085],\n\t\t\t\t[88.33236495000006, 26.514661764],\n\t\t\t\t[88.31934248900012, 26.494921367000032],\n\t\t\t\t[88.31386478700006, 26.481537170000095],\n\t\t\t\t[88.31510502100008, 26.465052389],\n\t\t\t\t[88.32254642700008, 26.451771546000103],\n\t\t\t\t[88.33562056500006, 26.44820587200003],\n\t\t\t\t[88.34021976700006, 26.454148662000065],\n\t\t\t\t[88.34301029400007, 26.477196351000103],\n\t\t\t\t[88.34652429200008, 26.484017639000072],\n\t\t\t\t[88.35355228700013, 26.484586080000028],\n\t\t\t\t[88.37691003500004, 26.475335999000023],\n\t\t\t\t[88.43458093200013, 26.465155741000032],\n\t\t\t\t[88.46114261900004, 26.453890280000067],\n\t\t\t\t[88.47540531400011, 26.432031148000036],\n\t\t\t\t[88.49545577000009, 26.378080953000094],\n\t\t\t\t[88.49762618100004, 26.352707825],\n\t\t\t\t[88.47540531400011, 26.35580841100004],\n\t\t\t\t[88.46791223200006, 26.35405141200006],\n\t\t\t\t[88.4579903560001, 26.353017883000078],\n\t\t\t\t[88.44863692200005, 26.353431295000078],\n\t\t\t\t[88.44202233900006, 26.356118470000112],\n\t\t\t\t[88.43168705300013, 26.362216289000074],\n\t\t\t\t[88.4260026450001, 26.35792714500009],\n\t\t\t\t[88.42119673700012, 26.348728740000112],\n\t\t\t\t[88.41380700700006, 26.340202129000076],\n\t\t\t\t[88.36678145400003, 26.31343373600002],\n\t\t\t\t[88.35169193600012, 26.300979717000033],\n\t\t\t\t[88.33660241700011, 26.281807760000035],\n\t\t\t\t[88.33293339100004, 26.267235006000064],\n\t\t\t\t[88.33453536000013, 26.23080312100008],\n\t\t\t\t[88.32626713100012, 26.215920309000026],\n\t\t\t\t[88.30869714400012, 26.206101787000065],\n\t\t\t\t[88.25030277600007, 26.18801503500005],\n\t\t\t\t[88.22978723200009, 26.18403595000005],\n\t\t\t\t[88.21888350500012, 26.180160217000022],\n\t\t\t\t[88.21195886300006, 26.173752340000064],\n\t\t\t\t[88.20565433800004, 26.16641428700008],\n\t\t\t\t[88.19692102100004, 26.159644674000035],\n\t\t\t\t[88.16379642800007, 26.140472717000122],\n\t\t\t\t[88.15563155100006, 26.128483785000057],\n\t\t\t\t[88.14446944200012, 26.095875957000104],\n\t\t\t\t[88.14136885600004, 26.090501607000036],\n\t\t\t\t[88.13992191600005, 26.085333964000043],\n\t\t\t\t[88.14116215000013, 26.075463766000055],\n\t\t\t\t[88.14477950000008, 26.0705028280001],\n\t\t\t\t[88.15098067200006, 26.066988830000057],\n\t\t\t\t[88.15640669800007, 26.061407776000053],\n\t\t\t\t[88.15790531400006, 26.050452373000056],\n\t\t\t\t[88.1510323490001, 26.031332093000074],\n\t\t\t\t[88.12586592600007, 26.013400371],\n\t\t\t\t[88.10653894000012, 25.97996571900002],\n\t\t\t\t[88.08803877800005, 25.923224996],\n\t\t\t\t[88.08266442900003, 25.9159386190001],\n\t\t\t\t[88.07739343300005, 25.91278635700006],\n\t\t\t\t[88.07439620000008, 25.90813547800009],\n\t\t\t\t[88.08204431200005, 25.86384877600007],\n\t\t\t\t[88.08896895400005, 25.84865590400004],\n\t\t\t\t[88.08757369000006, 25.839974264000077],\n\t\t\t\t[88.08757369000006, 25.830982564000024],\n\t\t\t\t[88.10333500200005, 25.814807841000047],\n\t\t\t\t[88.1080375570001, 25.806281230000124],\n\t\t\t\t[88.11491052200006, 25.787264303000043],\n\t\t\t\t[88.12772627800007, 25.77491363500009],\n\t\t\t\t[88.14643314600005, 25.77574045800013],\n\t\t\t\t[88.16622522000011, 25.78364695300006],\n\t\t\t\t[88.18271000200008, 25.792431946000065],\n\t\t\t\t[88.22746179300003, 25.80426584900006],\n\t\t\t\t[88.25991459200009, 25.789021301000034],\n\t\t\t\t[88.32027266500006, 25.725252584000103],\n\t\t\t\t[88.39298140400012, 25.680759176000024],\n\t\t\t\t[88.41943973800011, 25.653784078000072],\n\t\t\t\t[88.42378055900008, 25.592237447000073],\n\t\t\t\t[88.43778487200012, 25.579835104],\n\t\t\t\t[88.47540531400011, 25.56257517600001],\n\t\t\t\t[88.48558557100012, 25.542628072000085],\n\t\t\t\t[88.51276737500007, 25.523714498000047],\n\t\t\t\t[88.52046716400008, 25.50929677400002],\n\t\t\t\t[88.53028568600013, 25.500201721000067],\n\t\t\t\t[88.55095625800004, 25.49648101800004],\n\t\t\t\t[88.59358931500003, 25.495085755000062],\n\t\t\t\t[88.61317468300007, 25.486404114000024],\n\t\t\t\t[88.64542077600004, 25.46733551000004],\n\t\t\t\t[88.66634973200013, 25.46289133800012],\n\t\t\t\t[88.67808028100006, 25.465888570000047],\n\t\t\t\t[88.68707198100003, 25.47389841700003],\n\t\t\t\t[88.69565026900005, 25.48361358600006],\n\t\t\t\t[88.70619226100013, 25.49167511000003],\n\t\t\t\t[88.71415043100006, 25.492811992000057],\n\t\t\t\t[88.72314213100003, 25.49141672800006],\n\t\t\t\t[88.73265059500011, 25.49100331700005],\n\t\t\t\t[88.74257246900004, 25.495189108000105],\n\t\t\t\t[88.74195235200006, 25.51275909400006],\n\t\t\t\t[88.77233809500012, 25.501958720000047],\n\t\t\t\t[88.78096805800004, 25.495189108000105],\n\t\t\t\t[88.79311202000014, 25.481959941000085],\n\t\t\t\t[88.80582442200011, 25.471676331000097],\n\t\t\t\t[88.81491947500007, 25.45860219300006],\n\t\t\t\t[88.81631473800007, 25.437208151000036],\n\t\t\t\t[88.79931319200006, 25.401706442000105],\n\t\t\t\t[88.79962325000014, 25.39560862300003],\n\t\t\t\t[88.81037194800012, 25.388425598000097],\n\t\t\t\t[88.81326582800011, 25.380054016000102],\n\t\t\t\t[88.81404097600006, 25.370390524000086],\n\t\t\t\t[88.81833011900011, 25.35964182600007],\n\t\t\t\t[88.84199792500004, 25.332821757000076],\n\t\t\t\t[88.84902592000003, 25.327189026000056],\n\t\t\t\t[88.85925785400013, 25.32470855700008],\n\t\t\t\t[88.88018680800008, 25.32346832300003],\n\t\t\t\t[88.88612959800014, 25.31907582600006],\n\t\t\t\t[88.90287276200007, 25.30341786700008],\n\t\t\t\t[88.92648889200007, 25.300472310000075],\n\t\t\t\t[88.97532312000004, 25.302642721000083],\n\t\t\t\t[88.98271285000004, 25.29447784400007],\n\t\t\t\t[88.98493493700005, 25.284969381000067],\n\t\t\t\t[88.98235111500009, 25.27489247700005],\n\t\t\t\t[88.97532312000004, 25.265228984000103],\n\t\t\t\t[88.93775435400005, 25.240165914],\n\t\t\t\t[88.9290727130001, 25.229417216000073],\n\t\t\t\t[88.9279875090001, 25.215929667000026],\n\t\t\t\t[88.93077803600005, 25.202648825000026],\n\t\t\t\t[88.92788415600006, 25.192726949000118],\n\t\t\t\t[88.90964237500003, 25.189161275000046],\n\t\t\t\t[88.92416345200007, 25.167870585000074],\n\t\t\t\t[88.89863529500013, 25.169317526000057],\n\t\t\t\t[88.83021569900012, 25.191331686000026],\n\t\t\t\t[88.82360111500003, 25.194845683],\n\t\t\t\t[88.81708988500009, 25.19680938700013],\n\t\t\t\t[88.8091317140001, 25.195259094],\n\t\t\t\t[88.80251713100012, 25.188127747000053],\n\t\t\t\t[88.79233687400006, 25.166578675000025],\n\t\t\t\t[88.78422367300004, 25.16094594400009],\n\t\t\t\t[88.72453739400004, 25.166475322000068],\n\t\t\t\t[88.66459273300012, 25.18688751200004],\n\t\t\t\t[88.6342586670001, 25.19226186200008],\n\t\t\t\t[88.59911869300004, 25.193140361000033],\n\t\t\t\t[88.59012699400012, 25.190143127000013],\n\t\t\t\t[88.57772465000005, 25.177482401000063],\n\t\t\t\t[88.57069665500012, 25.173244935000028],\n\t\t\t\t[88.55937951600004, 25.17076446600005],\n\t\t\t\t[88.55467696100004, 25.171126201000035],\n\t\t\t\t[88.5500260820001, 25.1731415820001],\n\t\t\t\t[88.5231543380001, 25.179807841000112],\n\t\t\t\t[88.49183842000008, 25.191124980000083],\n\t\t\t\t[88.47540531400011, 25.195104065000052],\n\t\t\t\t[88.44129886900004, 25.189729716],\n\t\t\t\t[88.4314803470001, 25.173038229000056],\n\t\t\t\t[88.43416752100012, 25.11665924100005],\n\t\t\t\t[88.42579593900007, 25.051056010000124],\n\t\t\t\t[88.41411706500008, 25.021522929000085],\n\t\t\t\t[88.39101770100007, 24.99509043400012],\n\t\t\t\t[88.38786543800006, 24.968761292000053],\n\t\t\t\t[88.37566980000014, 24.945610251000076],\n\t\t\t\t[88.34089156100009, 24.904139913],\n\t\t\t\t[88.32275313400004, 24.8746843470001],\n\t\t\t\t[88.31360640500009, 24.868302307000064],\n\t\t\t\t[88.29681156400011, 24.86969757100006],\n\t\t\t\t[88.25485030100009, 24.87995534300005],\n\t\t\t\t[88.24275801600004, 24.880601299000105],\n\t\t\t\t[88.24187951700009, 24.898765564000044],\n\t\t\t\t[88.23283614100012, 24.918273417000037],\n\t\t\t\t[88.21878015100009, 24.93514577200004],\n\t\t\t\t[88.20245039900004, 24.945300191000072],\n\t\t\t\t[88.1830200610001, 24.946979675000037],\n\t\t\t\t[88.16451989700005, 24.941114400000046],\n\t\t\t\t[88.11491052200006, 24.916413066000032],\n\t\t\t\t[88.11491052200006, 24.912020569000035],\n\t\t\t\t[88.12033654800007, 24.906775411000027],\n\t\t\t\t[88.12493575100012, 24.89814544700006],\n\t\t\t\t[88.13806156400005, 24.863496399000056],\n\t\t\t\t[88.14095544500003, 24.844582825000103],\n\t\t\t\t[88.13124027500004, 24.831767070000055],\n\t\t\t\t[88.11739099100004, 24.81926137300003],\n\t\t\t\t[88.10777917500013, 24.801097107000103],\n\t\t\t\t[88.09480839000008, 24.803112488000053],\n\t\t\t\t[88.08824548300004, 24.796136170000054],\n\t\t\t\t[88.08535160400004, 24.78401804600007],\n\t\t\t\t[88.0840080160001, 24.770452983000084],\n\t\t\t\t[88.07698002200004, 24.761177063000062],\n\t\t\t\t[88.06426761900013, 24.759161682000112],\n\t\t\t\t[88.05320886200013, 24.754975891000086],\n\t\t\t\t[88.04845463100014, 24.71120595300009],\n\t\t\t\t[88.0354321690001, 24.69381683400006],\n\t\t\t\t[88.02716394100014, 24.675730082000044],\n\t\t\t\t[88.02178959200006, 24.64560272200005],\n\t\t\t\t[88.04090987200004, 24.640435079000056],\n\t\t\t\t[88.05723962400003, 24.63410471600004],\n\t\t\t\t[88.06726485200005, 24.613666687000077],\n\t\t\t\t[88.08183760600008, 24.599869080000033],\n\t\t\t\t[88.08498986800004, 24.593874614000086],\n\t\t\t\t[88.08498986800004, 24.541733093000047],\n\t\t\t\t[88.08602339700013, 24.536720480000085],\n\t\t\t\t[88.09000248300003, 24.532999777000057],\n\t\t\t\t[88.0987874760001, 24.5224836230001],\n\t\t\t\t[88.10793420400006, 24.50796254500007],\n\t\t\t\t[88.10994958500004, 24.50098622700007],\n\t\t\t\t[88.13878503400008, 24.495250143000092],\n\t\t\t\t[88.40130131100011, 24.36941803000012],\n\t\t\t\t[88.47540531400011, 24.315467835000064],\n\t\t\t\t[88.49834965000008, 24.31097198500005],\n\t\t\t\t[88.56310021900003, 24.308207296000077],\n\t\t\t\t[88.61245121300004, 24.292885234000025],\n\t\t\t\t[88.63451705000006, 24.294125468000047],\n\t\t\t\t[88.64950321500004, 24.31536448200002],\n\t\t\t\t[88.66014856000004, 24.338257141000057],\n\t\t\t\t[88.68180098500011, 24.333890483000076],\n\t\t\t\t[88.71456384300012, 24.315416158000048],\n\t\t\t\t[88.73750817900003, 24.28709747300006],\n\t\t\t\t[88.74303755700004, 24.24753916500002],\n\t\t\t\t[88.74494958500009, 24.24337921200008],\n\t\t\t\t[88.74748173000006, 24.226971945000017],\n\t\t\t\t[88.74980717000005, 24.223251242000103],\n\t\t\t\t[88.74639652500014, 24.21407867500001],\n\t\t\t\t[88.73482100400008, 24.19842071500007],\n\t\t\t\t[88.73161706600013, 24.18984242800012],\n\t\t\t\t[88.73145573500011, 24.1897713150001],\n\t\t\t\t[88.71590743000007, 24.182917786000033],\n\t\t\t\t[88.69378991700006, 24.17532135100008],\n\t\t\t\t[88.68376468900004, 24.166536356000094],\n\t\t\t\t[88.67808028100006, 24.154289043000077],\n\t\t\t\t[88.67828698800014, 24.144651388000042],\n\t\t\t\t[88.68298954300013, 24.12429087300002],\n\t\t\t\t[88.68180098500011, 24.112663676000054],\n\t\t\t\t[88.67539310700005, 24.09183807400008],\n\t\t\t\t[88.67410119700003, 24.082639669000102],\n\t\t\t\t[88.67901045700006, 24.071219178],\n\t\t\t\t[88.69782067900007, 24.05625885000002],\n\t\t\t\t[88.70092126500009, 24.043649801000086],\n\t\t\t\t[88.72500248200004, 24.03837880500008],\n\t\t\t\t[88.72546757000009, 24.028896179000085],\n\t\t\t\t[88.7138403730001, 24.01468516100003],\n\t\t\t\t[88.70159305800007, 23.995280660000063],\n\t\t\t\t[88.70836267100003, 23.98355011000008],\n\t\t\t\t[88.71435713700004, 23.964403992000072],\n\t\t\t\t[88.71714766500003, 23.9431391400001],\n\t\t\t\t[88.71415043100006, 23.925155742000115],\n\t\t\t\t[88.70443526200006, 23.913709412000102],\n\t\t\t\t[88.66650476100006, 23.87949961400001],\n\t\t\t\t[88.65312056500011, 23.869784445000064],\n\t\t\t\t[88.63394860900007, 23.866141256000063],\n\t\t\t\t[88.61317468300007, 23.867846578000027],\n\t\t\t\t[88.59358931500003, 23.866916402000086],\n\t\t\t\t[88.57762129700012, 23.855160014000077],\n\t\t\t\t[88.57436568200012, 23.845625712000086],\n\t\t\t\t[88.5754508870001, 23.836556499000025],\n\t\t\t\t[88.57762129700012, 23.827616476000102],\n\t\t\t\t[88.57751794500007, 23.818521424000025],\n\t\t\t\t[88.57235030200007, 23.806894226000068],\n\t\t\t\t[88.55767419400007, 23.785681051000026],\n\t\t\t\t[88.55271325700005, 23.774984029],\n\t\t\t\t[88.55250655100008, 23.765423890000093],\n\t\t\t\t[88.55974125200004, 23.75028269500008],\n\t\t\t\t[88.56118819200003, 23.74100677500006],\n\t\t\t\t[88.54010420800012, 23.64995290100005],\n\t\t\t\t[88.54155114800011, 23.63876495400008],\n\t\t\t\t[88.55095625800004, 23.6344241340001],\n\t\t\t\t[88.56123986800003, 23.632486268],\n\t\t\t\t[88.56635583500014, 23.628739726000063],\n\t\t\t\t[88.56439213100009, 23.61620819100007],\n\t\t\t\t[88.5610848390001, 23.608611756000087],\n\t\t\t\t[88.56170495600009, 23.602023010000025],\n\t\t\t\t[88.57142012600013, 23.592333679000077],\n\t\t\t\t[88.58154870600009, 23.58832875600008],\n\t\t\t\t[88.60128910400005, 23.59034413700003],\n\t\t\t\t[88.6092472740001, 23.588793844000023],\n\t\t\t\t[88.62423344000007, 23.573859355000067],\n\t\t\t\t[88.64764286400003, 23.535076193000023],\n\t\t\t\t[88.66448938000008, 23.518307190000073],\n\t\t\t\t[88.69378991700006, 23.499807028000035],\n\t\t\t\t[88.70464196800003, 23.495181986000077],\n\t\t\t\t[88.71942142800003, 23.468103536000015],\n\t\t\t\t[88.73192712400004, 23.472625224000055],\n\t\t\t\t[88.74370935100012, 23.489316711000086],\n\t\t\t\t[88.7568351650001, 23.49879933700005],\n\t\t\t\t[88.77016768400011, 23.48882578600005],\n\t\t\t\t[88.76789392100011, 23.467276713],\n\t\t\t\t[88.71926639800006, 23.348291728000063],\n\t\t\t\t[88.69503015100008, 23.312609152000064],\n\t\t\t\t[88.68593510000005, 23.293308004000025],\n\t\t\t\t[88.68660689300003, 23.271603902000024],\n\t\t\t\t[88.69658044500011, 23.252354432000104],\n\t\t\t\t[88.71001631700005, 23.241218160000088],\n\t\t\t\t[88.77569706300011, 23.22163279200005],\n\t\t\t\t[88.78618737800008, 23.221529439000037],\n\t\t\t\t[88.79419722500006, 23.224965922000067],\n\t\t\t\t[88.80096683800008, 23.23075368300003],\n\t\t\t\t[88.80954512500011, 23.236050517000066],\n\t\t\t\t[88.82267093900009, 23.237962545000087],\n\t\t\t\t[88.83962080900011, 23.234810283000044],\n\t\t\t\t[88.90964237500003, 23.212434388000062],\n\t\t\t\t[88.91806563300008, 23.208584493],\n\t\t\t\t[88.92695398000012, 23.206517436000055],\n\t\t\t\t[88.95423913600013, 23.207421773000092],\n\t\t\t\t[88.9599752200001, 23.2026933800001],\n\t\t\t\t[88.95982019100006, 23.19445098900006],\n\t\t\t\t[88.95470422400007, 23.18380564400009],\n\t\t\t\t[88.94586755400007, 23.174348857000027],\n\t\t\t\t[88.91909916200007, 23.153859152000038],\n\t\t\t\t[88.86478723200014, 23.10027069100009],\n\t\t\t\t[88.85129968300004, 23.07513010700005],\n\t\t\t\t[88.84871586100007, 23.02384124800001],\n\t\t\t\t[88.83941410300014, 22.995367534000067],\n\t\t\t\t[88.83879398700009, 22.975808004000058],\n\t\t\t\t[88.84277307100012, 22.964568380000017],\n\t\t\t\t[88.86173832200006, 22.942399190000074],\n\t\t\t\t[88.87217696100004, 22.926767070000054],\n\t\t\t\t[88.89346765200008, 22.879638164000127],\n\t\t\t\t[88.90514652600007, 22.86643483500005],\n\t\t\t\t[88.93310347500011, 22.85811492900008],\n\t\t\t\t[88.94452396600008, 22.848012187000037],\n\t\t\t\t[88.94679773000013, 22.834524638000076],\n\t\t\t\t[88.94514408400005, 22.815094300000098],\n\t\t\t\t[88.94121667500008, 22.795663961000017],\n\t\t\t\t[88.9368758550001, 22.782331441000096],\n\t\t\t\t[88.92623051000004, 22.767035218000032],\n\t\t\t\t[88.91496504800006, 22.75440033000011],\n\t\t\t\t[88.90814375800011, 22.74078359000002],\n\t\t\t\t[88.91057255100009, 22.722593486000065],\n\t\t\t\t[88.92250980600011, 22.69370636000012],\n\t\t\t\t[88.92592045100014, 22.680838928000114],\n\t\t\t\t[88.93000288900004, 22.658618063000077],\n\t\t\t\t[88.9423535570001, 22.637482402000032],\n\t\t\t\t[88.95201704900012, 22.611902568000076],\n\t\t\t\t[88.95640954600003, 22.584979146000066],\n\t\t\t\t[88.95031172700004, 22.561983134000016],\n\t\t\t\t[88.9279875090001, 22.54813385000007],\n\t\t\t\t[88.95904504400005, 22.53681671100007],\n\t\t\t\t[88.97098230000006, 22.52792836500008],\n\t\t\t\t[88.979974, 22.490928039000025],\n\t\t\t\t[88.99837080900011, 22.45124053900004],\n\t\t\t\t[89.00250492300006, 22.427986145000105],\n\t\t\t\t[89.00074792500004, 22.420131328000068],\n\t\t\t\t[88.99216963700013, 22.406953837000103],\n\t\t\t\t[88.98948246300012, 22.396670227000115],\n\t\t\t\t[88.98958581600004, 22.386903382000057],\n\t\t\t\t[89.00152307100007, 22.333676656000094],\n\t\t\t\t[89.00694909700013, 22.32142934200006],\n\t\t\t\t[89.02353723100003, 22.294815979000035],\n\t\t\t\t[89.00911950700004, 22.285617575000046],\n\t\t\t\t[89.01862797100011, 22.26468861900004],\n\t\t\t\t[89.06229455500011, 22.21156524700011],\n\t\t\t\t[89.07071781400009, 22.194822083000062],\n\t\t\t\t[89.07619551700009, 22.175030009000082],\n\t\t\t\t[89.07815922000009, 22.150845439000122],\n\t\t\t\t[89.06069258700006, 22.130484925000076],\n\t\t\t\t[89.06039472700007, 22.12986888200004],\n\t\t\t\t[89.06031334700003, 22.130601304000038],\n\t\t\t\t[89.04371178500003, 22.13739655200004],\n\t\t\t\t[89.04859459700003, 22.12295156500005],\n\t\t\t\t[89.04566491000003, 22.11204661700009],\n\t\t\t\t[89.03988691500007, 22.100897528000075],\n\t\t\t\t[89.03687584700003, 22.085598049000055],\n\t\t\t\t[89.04004967500003, 22.069525458000044],\n\t\t\t\t[89.05404707100007, 22.04364655200004],\n\t\t\t\t[89.05738366000003, 22.03123607000009],\n\t\t\t\t[89.06560306100005, 21.96710846600007],\n\t\t\t\t[89.06088300900007, 21.93846263200004],\n\t\t\t\t[89.03687584700003, 21.925116278000075],\n\t\t\t\t[89.02312259200005, 21.93109772300005],\n\t\t\t\t[89.01303144600007, 21.929429429000038],\n\t\t\t\t[89.00806725400008, 21.92055898600006],\n\t\t\t\t[89.00953209700003, 21.90460846600007],\n\t\t\t\t[88.99301191500007, 21.912665106000077],\n\t\t\t\t[88.96045983200008, 21.93431224200009],\n\t\t\t\t[88.94467207100007, 21.938788153000075],\n\t\t\t\t[88.93783613400007, 21.94871653900009],\n\t\t\t\t[88.93458092500003, 21.969305731000077],\n\t\t\t\t[88.92872155000003, 21.98655833500004],\n\t\t\t\t[88.91391035200007, 21.98655833500004],\n\t\t\t\t[88.90503991000003, 21.96942780200004],\n\t\t\t\t[88.91081790500004, 21.946478583000044],\n\t\t\t\t[88.92408287900008, 21.926336981000077],\n\t\t\t\t[88.93783613400007, 21.917669989000046],\n\t\t\t\t[88.95191491000003, 21.913885809000078],\n\t\t\t\t[88.96827233200008, 21.904730536000045],\n\t\t\t\t[88.99586022200003, 21.88418203300006],\n\t\t\t\t[89.01587975400008, 21.853338934000078],\n\t\t\t\t[89.03093509200005, 21.770453192000048],\n\t\t\t\t[89.04371178500003, 21.733343817000048],\n\t\t\t\t[89.04786217500003, 21.72801341400009],\n\t\t\t\t[89.06788170700008, 21.709133205000057],\n\t\t\t\t[89.08277428500003, 21.678208726000037],\n\t\t\t\t[89.08521569100003, 21.674709377000056],\n\t\t\t\t[89.08822675900007, 21.633734442000048],\n\t\t\t\t[89.08269290500004, 21.617336330000057],\n\t\t\t\t[89.06421959700003, 21.609198309000078],\n\t\t\t\t[89.05323326900003, 21.609808661000045],\n\t\t\t\t[89.04468834700003, 21.61351146000004],\n\t\t\t\t[89.03882897200003, 21.61945221600007],\n\t\t\t\t[89.03687584700003, 21.626898505000042],\n\t\t\t\t[89.03394616000003, 21.633246161000045],\n\t\t\t\t[89.02759850400008, 21.62457916900007],\n\t\t\t\t[89.02165774800005, 21.611802476000037],\n\t\t\t\t[89.01978600400008, 21.60610586100006],\n\t\t\t\t[89.00025475400008, 21.60342031500005],\n\t\t\t\t[88.97575931100005, 21.61591217700004],\n\t\t\t\t[88.93384850400008, 21.64394765800006],\n\t\t\t\t[88.89698326900003, 21.650132554000038],\n\t\t\t\t[88.89161217500003, 21.653509833000044],\n\t\t\t\t[88.88607832100007, 21.661810614000046],\n\t\t\t\t[88.88160241000003, 21.672023830000057],\n\t\t\t\t[88.87208092500003, 21.74900950700004],\n\t\t\t\t[88.86605879000007, 21.766831773000035],\n\t\t\t\t[88.85865319100003, 21.766831773000035],\n\t\t\t\t[88.85572350400008, 21.748846747000073],\n\t\t\t\t[88.84156334700003, 21.71625397300005],\n\t\t\t\t[88.83822675900007, 21.701971747000073],\n\t\t\t\t[88.84294681100005, 21.684149481000077],\n\t\t\t\t[88.85987389400003, 21.65257396000004],\n\t\t\t\t[88.85865319100003, 21.636542059000078],\n\t\t\t\t[88.84424889400003, 21.622219143000052],\n\t\t\t\t[88.82398522200003, 21.617254950000074],\n\t\t\t\t[88.80583743600005, 21.622870184000078],\n\t\t\t\t[88.79786217500003, 21.64020416900007],\n\t\t\t\t[88.81478925900007, 21.65387604400007],\n\t\t\t\t[88.81836998800003, 21.65761953300006],\n\t\t\t\t[88.81853274800005, 21.665838934000078],\n\t\t\t\t[88.81666100400008, 21.675034898000035],\n\t\t\t\t[88.81088300900007, 21.69171784100007],\n\t\t\t\t[88.80494225400008, 21.67186107000009],\n\t\t\t\t[88.80046634200005, 21.661851304000038],\n\t\t\t\t[88.79420006600003, 21.65761953300006],\n\t\t\t\t[88.78402754000007, 21.655951239000046],\n\t\t\t\t[88.77906334700003, 21.651190497000073],\n\t\t\t\t[88.77711022200003, 21.64354075700004],\n\t\t\t\t[88.77686608200008, 21.63344961100006],\n\t\t\t\t[88.78174889400003, 21.61424388200004],\n\t\t\t\t[88.79102623800003, 21.598863023000035],\n\t\t\t\t[88.79664147200003, 21.584418036000045],\n\t\t\t\t[88.79053795700008, 21.56826406500005],\n\t\t\t\t[88.76246178500003, 21.555853583000044],\n\t\t\t\t[88.72787519600007, 21.559881903000075],\n\t\t\t\t[88.70753014400003, 21.57831452000005],\n\t\t\t\t[88.72217858200008, 21.609198309000078],\n\t\t\t\t[88.68799889400003, 21.678127346000053],\n\t\t\t\t[88.68490644600007, 21.697211005000042],\n\t\t\t\t[88.70362389400003, 21.810614325000074],\n\t\t\t\t[88.69800866000003, 21.825506903000075],\n\t\t\t\t[88.69450931100005, 21.83982982000009],\n\t\t\t\t[88.71469160200007, 21.89785390800006],\n\t\t\t\t[88.71697024800005, 21.951971747000073],\n\t\t\t\t[88.72217858200008, 21.966131903000075],\n\t\t\t\t[88.73316491000003, 21.97719961100006],\n\t\t\t\t[88.74683678500003, 21.987127997000073],\n\t\t\t\t[88.75831139400003, 21.99945709800005],\n\t\t\t\t[88.76303144600007, 22.017279364000046],\n\t\t\t\t[88.75464928500003, 22.037583726000037],\n\t\t\t\t[88.71705162900008, 22.05805084800005],\n\t\t\t\t[88.70850670700008, 22.072211005000042],\n\t\t\t\t[88.71485436300003, 22.08698151200008],\n\t\t\t\t[88.73015384200005, 22.103583075000074],\n\t\t\t\t[88.76303144600007, 22.130560614000046],\n\t\t\t\t[88.74390709700003, 22.129339911000045],\n\t\t\t\t[88.72657311300003, 22.121161200000074],\n\t\t\t\t[88.71216881600003, 22.109035549000055],\n\t\t\t\t[88.70167076900003, 22.095851955000057],\n\t\t\t\t[88.69483483200008, 22.08152903900009],\n\t\t\t\t[88.69288170700008, 22.06586334800005],\n\t\t\t\t[88.69947350400008, 22.053208726000037],\n\t\t\t\t[88.71851647200003, 22.048041083000044],\n\t\t\t\t[88.73072350400008, 22.037176825000074],\n\t\t\t\t[88.72331790500004, 22.01308828300006],\n\t\t\t\t[88.70167076900003, 21.97601959800005],\n\t\t\t\t[88.69841556100005, 21.962591864000046],\n\t\t\t\t[88.68995201900003, 21.94599030200004],\n\t\t\t\t[88.67872155000003, 21.936672268000052],\n\t\t\t\t[88.66700280000003, 21.945013739000046],\n\t\t\t\t[88.65626061300003, 21.941066799000055],\n\t\t\t\t[88.64258873800003, 21.94090403900009],\n\t\t\t\t[88.63086998800003, 21.945461330000057],\n\t\t\t\t[88.62598717500003, 21.955511786000045],\n\t\t\t\t[88.62745201900003, 21.970404364000046],\n\t\t\t\t[88.63168379000007, 21.979803778000075],\n\t\t\t\t[88.64633222700007, 22.00023021000004],\n\t\t\t\t[88.65349368600005, 22.018011786000045],\n\t\t\t\t[88.65259850400008, 22.031805731000077],\n\t\t\t\t[88.64877363400007, 22.046047268000052],\n\t\t\t\t[88.64503014400003, 22.075140692000048],\n\t\t\t\t[88.63949629000007, 22.09723541900007],\n\t\t\t\t[88.63949629000007, 22.109523830000057],\n\t\t\t\t[88.65699303500003, 22.15106842700004],\n\t\t\t\t[88.67400149800005, 22.162054755000042],\n\t\t\t\t[88.68311608200008, 22.18496328300006],\n\t\t\t\t[88.67994225400008, 22.204413153000075],\n\t\t\t\t[88.66016686300003, 22.205023505000042],\n\t\t\t\t[88.66114342500003, 22.198960679000038],\n\t\t\t\t[88.65601647200003, 22.183254299000055],\n\t\t\t\t[88.64966881600003, 22.169094143000052],\n\t\t\t\t[88.64633222700007, 22.167792059000078],\n\t\t\t\t[88.64429772200003, 22.16229889500005],\n\t\t\t\t[88.63493899800005, 22.144964911000045],\n\t\t\t\t[88.63086998800003, 22.125799872000073],\n\t\t\t\t[88.62208092500003, 22.116034247000073],\n\t\t\t\t[88.61915123800003, 22.109523830000057],\n\t\t\t\t[88.61833743600005, 22.10297272300005],\n\t\t\t\t[88.61996504000007, 22.07831452000005],\n\t\t\t\t[88.62549889400003, 22.05927155200004],\n\t\t\t\t[88.62598717500003, 22.048041083000044],\n\t\t\t\t[88.62037194100003, 22.02997467700004],\n\t\t\t\t[88.60254967500003, 22.006415106000077],\n\t\t\t\t[88.59864342500003, 21.990301825000074],\n\t\t\t\t[88.60027103000004, 21.947211005000042],\n\t\t\t\t[88.59839928500003, 21.929348049000055],\n\t\t\t\t[88.56706790500004, 21.850816148000035],\n\t\t\t\t[88.56462649800005, 21.83234284100007],\n\t\t\t\t[88.56544030000003, 21.771185614000046],\n\t\t\t\t[88.56462649800005, 21.766831773000035],\n\t\t\t\t[88.58130944100003, 21.76943594000005],\n\t\t\t\t[88.60417728000004, 21.77875397300005],\n\t\t\t\t[88.62403405000003, 21.77802155200004],\n\t\t\t\t[88.63282311300003, 21.750067450000074],\n\t\t\t\t[88.63021894600007, 21.731756903000075],\n\t\t\t\t[88.62338300900007, 21.710272528000075],\n\t\t\t\t[88.61264082100007, 21.69749583500004],\n\t\t\t\t[88.59864342500003, 21.70538971600007],\n\t\t\t\t[88.59180748800003, 21.70538971600007],\n\t\t\t\t[88.59961998800003, 21.637274481000077],\n\t\t\t\t[88.59506269600007, 21.612127997000073],\n\t\t\t\t[88.57813561300003, 21.623439846000053],\n\t\t\t\t[88.57813561300003, 21.57168203300006],\n\t\t\t\t[88.57227623800003, 21.557928778000075],\n\t\t\t\t[88.55892988400007, 21.555568752000056],\n\t\t\t\t[88.54476972700007, 21.56199778900009],\n\t\t\t\t[88.53646894600007, 21.575100002000056],\n\t\t\t\t[88.53028405000003, 21.564398505000042],\n\t\t\t\t[88.52963300900007, 21.55337148600006],\n\t\t\t\t[88.53443444100003, 21.542914130000042],\n\t\t\t\t[88.54395592500003, 21.534084377000056],\n\t\t\t\t[88.51295006600003, 21.524644273000035],\n\t\t\t\t[88.49390709700003, 21.534816799000055],\n\t\t\t\t[88.48796634200005, 21.55654531500005],\n\t\t\t\t[88.49561608200008, 21.581854559000078],\n\t\t\t\t[88.50212649800005, 21.58934153900009],\n\t\t\t\t[88.50879967500003, 21.59438711100006],\n\t\t\t\t[88.51400800900007, 21.600816148000035],\n\t\t\t\t[88.51612389400003, 21.612616278000075],\n\t\t\t\t[88.51661217500003, 21.62641022300005],\n\t\t\t\t[88.51880944100003, 21.639146226000037],\n\t\t\t\t[88.52295983200008, 21.64988841400009],\n\t\t\t\t[88.52963300900007, 21.65761953300006],\n\t\t\t\t[88.50953209700003, 21.71230703300006],\n\t\t\t\t[88.50489342500003, 21.741522528000075],\n\t\t\t\t[88.51270592500003, 21.763413804000038],\n\t\t\t\t[88.53288821700005, 21.795314846000053],\n\t\t\t\t[88.53101647200003, 21.82412344000005],\n\t\t\t\t[88.51587975400008, 21.850816148000035],\n\t\t\t\t[88.49561608200008, 21.876695054000038],\n\t\t\t\t[88.51465905000003, 21.91620514500005],\n\t\t\t\t[88.51498457100007, 21.937201239000046],\n\t\t\t\t[88.49561608200008, 21.95180898600006],\n\t\t\t\t[88.49984785200007, 21.933661200000074],\n\t\t\t\t[88.49236087300005, 21.922023830000057],\n\t\t\t\t[88.48121178500003, 21.909898179000038],\n\t\t\t\t[88.47445722700007, 21.890326239000046],\n\t\t\t\t[88.47706139400003, 21.87181224200009],\n\t\t\t\t[88.49203535200007, 21.837144273000035],\n\t\t\t\t[88.49561608200008, 21.81867096600007],\n\t\t\t\t[88.49350019600007, 21.805161851000037],\n\t\t\t\t[88.48829186300003, 21.803656317000048],\n\t\t\t\t[88.48145592500003, 21.805161851000037],\n\t\t\t\t[88.47445722700007, 21.80097077000005],\n\t\t\t\t[88.46827233200008, 21.77724844000005],\n\t\t\t\t[88.45769290500004, 21.75885651200008],\n\t\t\t\t[88.45337975400008, 21.74176666900007],\n\t\t\t\t[88.45215905000003, 21.722805080000057],\n\t\t\t\t[88.45476321700005, 21.70538971600007],\n\t\t\t\t[88.46859785200007, 21.67715078300006],\n\t\t\t\t[88.47217858200008, 21.663275458000044],\n\t\t\t\t[88.46827233200008, 21.64394765800006],\n\t\t\t\t[88.45630944100003, 21.62400950700004],\n\t\t\t\t[88.44190514400003, 21.616156317000048],\n\t\t\t\t[88.42611738400007, 21.611029364000046],\n\t\t\t\t[88.40967858200008, 21.599269924000055],\n\t\t\t\t[88.39307701900003, 21.60024648600006],\n\t\t\t\t[88.38355553500003, 21.631415106000077],\n\t\t\t\t[88.38282311300003, 21.67133209800005],\n\t\t\t\t[88.39258873800003, 21.698553778000075],\n\t\t\t\t[88.38062584700003, 21.696193752000056],\n\t\t\t\t[88.36451256600003, 21.68695709800005],\n\t\t\t\t[88.35572350400008, 21.68496328300006],\n\t\t\t\t[88.34620201900003, 21.688625393000052],\n\t\t\t\t[88.34066816500007, 21.69749583500004],\n\t\t\t\t[88.33643639400003, 21.708726304000038],\n\t\t\t\t[88.33122806100005, 21.71906159100007],\n\t\t\t\t[88.32634524800005, 21.711086330000057],\n\t\t\t\t[88.32471764400003, 21.70136139500005],\n\t\t\t\t[88.32740319100003, 21.691107489000046],\n\t\t\t\t[88.34571373800003, 21.67059967700004],\n\t\t\t\t[88.34945722700007, 21.660956122000073],\n\t\t\t\t[88.34880618600005, 21.65029531500005],\n\t\t\t\t[88.34546959700003, 21.636542059000078],\n\t\t\t\t[88.33545983200008, 21.615790106000077],\n\t\t\t\t[88.32178795700008, 21.60565827000005],\n\t\t\t\t[88.30974368600005, 21.610174872000073],\n\t\t\t\t[88.30445397200003, 21.63344961100006],\n\t\t\t\t[88.30201256600003, 21.74518463700008],\n\t\t\t\t[88.29818769600007, 21.764105536000045],\n\t\t\t\t[88.28980553500003, 21.780218817000048],\n\t\t\t\t[88.27312259200005, 21.79791901200008],\n\t\t\t\t[88.26156660200007, 21.798651434000078],\n\t\t\t\t[88.26417076900003, 21.77529531500005],\n\t\t\t\t[88.29542076900003, 21.676581122000073],\n\t\t\t\t[88.29704837300005, 21.65387604400007],\n\t\t\t\t[88.29444420700008, 21.64280833500004],\n\t\t\t\t[88.28419030000003, 21.621242580000057],\n\t\t\t\t[88.28337649800005, 21.609198309000078],\n\t\t\t\t[88.28760826900003, 21.60028717700004],\n\t\t\t\t[88.30062910200007, 21.58934153900009],\n\t\t\t\t[88.30445397200003, 21.581854559000078],\n\t\t\t\t[88.30583743600005, 21.57168203300006],\n\t\t\t\t[88.30372155000003, 21.568793036000045],\n\t\t\t\t[88.29786217500003, 21.566555080000057],\n\t\t\t\t[88.28711998800003, 21.558294989000046],\n\t\t\t\t[88.27898196700005, 21.555161851000037],\n\t\t\t\t[88.26612389400003, 21.553859768000052],\n\t\t\t\t[88.25440514400003, 21.55467357000009],\n\t\t\t\t[88.24927819100003, 21.558294989000046],\n\t\t\t\t[88.24594160200007, 21.579901434000078],\n\t\t\t\t[88.23747806100005, 21.601711330000057],\n\t\t\t\t[88.22437584700003, 21.613023179000038],\n\t\t\t\t[88.20826256600003, 21.60297272300005],\n\t\t\t\t[88.18946373800003, 21.641791083000044],\n\t\t\t\t[88.18189537900008, 21.665228583000044],\n\t\t\t\t[88.18091881600003, 21.68496328300006],\n\t\t\t\t[88.19044030000003, 21.70408763200004],\n\t\t\t\t[88.20346113400007, 21.724351304000038],\n\t\t\t\t[88.21045983200008, 21.747259833000044],\n\t\t\t\t[88.20142662900008, 21.774318752000056],\n\t\t\t\t[88.20972741000003, 21.78856028900009],\n\t\t\t\t[88.20378665500004, 21.80540599200009],\n\t\t\t\t[88.15406334700003, 21.88808828300006],\n\t\t\t\t[88.15642337300005, 21.89785390800006],\n\t\t\t\t[88.15943444100003, 21.90615469000005],\n\t\t\t\t[88.14673912900008, 21.95921458500004],\n\t\t\t\t[88.14991295700008, 21.976385809000078],\n\t\t\t\t[88.15626061300003, 21.99087148600006],\n\t\t\t\t[88.16431725400008, 22.003119208000044],\n\t\t\t\t[88.20679772200003, 22.05337148600006],\n\t\t\t\t[88.22242272200003, 22.077948309000078],\n\t\t\t\t[88.21273847700007, 22.100043036000045],\n\t\t\t\t[88.20337975400008, 22.15176015800006],\n\t\t\t\t[88.19800866000003, 22.167792059000078],\n\t\t\t\t[88.16529381600003, 22.18500397300005],\n\t\t\t\t[88.11841881600003, 22.20018138200004],\n\t\t\t\t[88.08130944100003, 22.217352606000077],\n\t\t\t\t[88.07732181100005, 22.24042389500005],\n\t\t\t\t[88.05974368600005, 22.22947825700004],\n\t\t\t\t[88.04346764400003, 22.224758205000057],\n\t\t\t\t[88.02702884200005, 22.227850653000075],\n\t\t\t\t[88.00904381600003, 22.24042389500005],\n\t\t\t\t[87.98511803500003, 22.26593659100007],\n\t\t\t\t[87.97266686300003, 22.28318919500009],\n\t\t\t\t[87.96745853000004, 22.298488674000055],\n\t\t\t\t[87.96420332100007, 22.319281317000048],\n\t\t\t\t[87.95069420700008, 22.35618724200009],\n\t\t\t\t[87.94752037900008, 22.373846747000073],\n\t\t\t\t[87.94613691500007, 22.394924221000053],\n\t\t\t\t[87.94044030000003, 22.413031317000048],\n\t\t\t\t[87.92798912900008, 22.424221096000053],\n\t\t\t\t[87.90658613400007, 22.424750067000048],\n\t\t\t\t[87.90658613400007, 22.41860586100006],\n\t\t\t\t[87.92286217500003, 22.397772528000075],\n\t\t\t\t[87.93580162900008, 22.355169989000046],\n\t\t\t\t[87.94752037900008, 22.27765534100007],\n\t\t\t\t[87.95281009200005, 22.26243724200009],\n\t\t\t\t[87.96534264400003, 22.24481842700004],\n\t\t\t\t[87.99195397200003, 22.21588776200008],\n\t\t\t\t[88.00847415500004, 22.204901434000078],\n\t\t\t\t[88.02540123800003, 22.200913804000038],\n\t\t\t\t[88.05738366000003, 22.198879299000055],\n\t\t\t\t[88.09546959700003, 22.191229559000078],\n\t\t\t\t[88.13257897200003, 22.17914459800005],\n\t\t\t\t[88.16098066500007, 22.15656159100007],\n\t\t\t\t[88.17351321700005, 22.116888739000046],\n\t\t\t\t[88.16431725400008, 22.089789130000042],\n\t\t\t\t[88.14063561300003, 22.06012604400007],\n\t\t\t\t[88.11117597700007, 22.034857489000046],\n\t\t\t\t[88.08472741000003, 22.020697333000044],\n\t\t\t\t[88.04859459700003, 22.020738023000035],\n\t\t\t\t[88.04314212300005, 22.017279364000046],\n\t\t\t\t[88.04517662900008, 22.00653717700004],\n\t\t\t\t[88.04900149800005, 21.995428778000075],\n\t\t\t\t[88.05079186300003, 21.98501211100006],\n\t\t\t\t[88.04688561300003, 21.97601959800005],\n\t\t\t\t[88.03239993600005, 21.957180080000057],\n\t\t\t\t[87.98365319100003, 21.85419342700004],\n\t\t\t\t[87.97046959700003, 21.836493231000077],\n\t\t\t\t[87.95777428500003, 21.828924872000073],\n\t\t\t\t[87.94800866000003, 21.825384833000044],\n\t\t\t\t[87.90902754000007, 21.79881419500009],\n\t\t\t\t[87.90219160200007, 21.796820380000042],\n\t\t\t\t[87.89918053500003, 21.79482656500005],\n\t\t\t\t[87.89568118600005, 21.78937409100007],\n\t\t\t\t[87.89478600400008, 21.77875397300005],\n\t\t\t\t[87.89291425900007, 21.774318752000056],\n\t\t\t\t[87.86719811300003, 21.750799872000073],\n\t\t\t\t[87.83399498800003, 21.729315497000073],\n\t\t\t\t[87.75570722700007, 21.69171784100007],\n\t\t\t\t[87.70378665500004, 21.655503648000035],\n\t\t\t\t[87.68384850400008, 21.650132554000038],\n\t\t\t\t[87.64210045700008, 21.652085679000038],\n\t\t\t\t[87.62134850400008, 21.65062083500004],\n\t\t\t\t[87.47738691500007, 21.61359284100007],\n\t\t\t\t[87.46876061300003, 21.611395575000074],\n\t\t\t\t[87.40495853000004, 21.58665599200009],\n\t\t\t\t[87.34180748800003, 21.56240469000005],\n\t\t\t\t[87.29346764400003, 21.553656317000048],\n\t\t\t\t[87.25611412900008, 21.56199778900009],\n\t\t\t\t[87.24594160200007, 21.556586005000042],\n\t\t\t\t[87.23519941500007, 21.554510809000078],\n\t\t\t\t[87.21143639400003, 21.55459219000005],\n\t\t\t\t[87.20093834700003, 21.551988023000035],\n\t\t\t\t[87.11304772200003, 21.507961330000057],\n\t\t\t\t[87.06373131600003, 21.475002346000053],\n\t\t\t\t[86.91765384200005, 21.327378648000035],\n\t\t\t\t[86.86695397200003, 21.25604889500005],\n\t\t\t\t[86.83725019600007, 21.174709377000056],\n\t\t\t\t[86.84400475400008, 21.08222077000005],\n\t\t\t\t[86.95215905000003, 20.84910716400009],\n\t\t\t\t[86.96566816500007, 20.805975653000075],\n\t\t\t\t[86.95386803500003, 20.780585028000075],\n\t\t\t\t[86.93628991000003, 20.787502346000053],\n\t\t\t\t[86.91651451900003, 20.78807200700004],\n\t\t\t\t[86.87875410200007, 20.780585028000075],\n\t\t\t\t[86.88933353000004, 20.764471747000073],\n\t\t\t\t[86.91065514400003, 20.756415106000077],\n\t\t\t\t[86.95720462300005, 20.753241278000075],\n\t\t\t\t[86.97999108200008, 20.755560614000046],\n\t\t\t\t[86.98658287900008, 20.75185781500005],\n\t\t\t\t[86.99488366000003, 20.73895905200004],\n\t\t\t\t[87.00001061300003, 20.728216864000046],\n\t\t\t\t[87.00180097700007, 20.71898021000004],\n\t\t\t\t[86.99870853000004, 20.71112702000005],\n\t\t\t\t[86.98861738400007, 20.704250393000052],\n\t\t\t\t[86.97575931100005, 20.710679429000038],\n\t\t\t\t[86.96119225400008, 20.712836005000042],\n\t\t\t\t[86.94825280000003, 20.709051825000074],\n\t\t\t\t[86.94019616000003, 20.69798411700009],\n\t\t\t\t[86.95191491000003, 20.697007554000038],\n\t\t\t\t[86.96119225400008, 20.695054429000038],\n\t\t\t\t[86.96851647200003, 20.691148179000038],\n\t\t\t\t[86.97429446700005, 20.684393622000073],\n\t\t\t\t[86.98170006600003, 20.685370184000078],\n\t\t\t\t[86.98650149800005, 20.684393622000073],\n\t\t\t\t[86.99024498800003, 20.67999909100007],\n\t\t\t\t[86.99488366000003, 20.670721747000073],\n\t\t\t\t[87.01937910200007, 20.68036530200004],\n\t\t\t\t[87.03337649800005, 20.69017161700009],\n\t\t\t\t[87.04322350400008, 20.69798411700009],\n\t\t\t\t[87.02751712300005, 20.67967357000009],\n\t\t\t\t[87.00359134200005, 20.657049872000073],\n\t\t\t\t[86.97624759200005, 20.637884833000044],\n\t\t\t\t[86.92318769600007, 20.62173086100006],\n\t\t\t\t[86.77418053500003, 20.51194896000004],\n\t\t\t\t[86.75147545700008, 20.489162502000056],\n\t\t\t\t[86.73389733200008, 20.462225653000075],\n\t\t\t\t[86.72461998800003, 20.43195221600007],\n\t\t\t\t[86.72046959700003, 20.368475653000075],\n\t\t\t\t[86.74195397200003, 20.37954336100006],\n\t\t\t\t[86.75635826900003, 20.393744208000044],\n\t\t\t\t[86.76978600400008, 20.40070221600007],\n\t\t\t\t[86.78874759200005, 20.39012278900009],\n\t\t\t\t[86.78825931100005, 20.402818101000037],\n\t\t\t\t[86.78980553500003, 20.41469961100006],\n\t\t\t\t[86.79615319100003, 20.437323309000078],\n\t\t\t\t[86.80982506600003, 20.41510651200008],\n\t\t\t\t[86.79420006600003, 20.378159898000035],\n\t\t\t\t[86.76832116000003, 20.343451239000046],\n\t\t\t\t[86.75147545700008, 20.328070380000042],\n\t\t\t\t[86.73926842500003, 20.32420482000009],\n\t\t\t\t[86.71973717500003, 20.31509023600006],\n\t\t\t\t[86.70167076900003, 20.30377838700008],\n\t\t\t\t[86.69369550900007, 20.29393138200004],\n\t\t\t\t[86.70167076900003, 20.28465403900009],\n\t\t\t\t[86.71973717500003, 20.29173411700009],\n\t\t\t\t[86.75464928500003, 20.31443919500009],\n\t\t\t\t[86.71745853000004, 20.286932684000078],\n\t\t\t\t[86.62818444100003, 20.235256252000056],\n\t\t\t\t[86.58383222700007, 20.21820709800005],\n\t\t\t\t[86.53419030000003, 20.20612213700008],\n\t\t\t\t[86.51148522200003, 20.19745514500005],\n\t\t\t\t[86.49512780000003, 20.184068101000037],\n\t\t\t\t[86.49040774800005, 20.17405833500004],\n\t\t\t\t[86.47885175900007, 20.129339911000045],\n\t\t\t\t[86.46851647200003, 20.10927969000005],\n\t\t\t\t[86.46713300900007, 20.094671942000048],\n\t\t\t\t[86.41504967500003, 20.036322333000044],\n\t\t\t\t[86.39144941500007, 20.02020905200004],\n\t\t\t\t[86.39673912900008, 20.00995514500005],\n\t\t\t\t[86.40414472700007, 20.00263092700004],\n\t\t\t\t[86.41407311300003, 19.998846747000073],\n\t\t\t\t[86.42628014400003, 19.999172268000052],\n\t\t\t\t[86.39722741000003, 19.982855536000045],\n\t\t\t\t[86.34839928500003, 20.00885651200008],\n\t\t\t\t[86.27540123800003, 20.06736888200004],\n\t\t\t\t[86.23129316500007, 20.064886786000045],\n\t\t\t\t[86.20915774800005, 20.06663646000004],\n\t\t\t\t[86.19971764400003, 20.077948309000078],\n\t\t\t\t[86.19597415500004, 20.08030833500004],\n\t\t\t\t[86.17302493600005, 20.10219961100006],\n\t\t\t\t[86.16846764400003, 20.11318594000005],\n\t\t\t\t[86.16309655000003, 20.134833075000074],\n\t\t\t\t[86.15870201900003, 20.143133856000077],\n\t\t\t\t[86.15251712300005, 20.143133856000077],\n\t\t\t\t[86.14503014400003, 20.122015692000048],\n\t\t\t\t[86.15430748800003, 20.089992580000057],\n\t\t\t\t[86.15870201900003, 20.08104075700004],\n\t\t\t\t[86.16773522200003, 20.07294342700004],\n\t\t\t\t[86.18775475400008, 20.063666083000044],\n\t\t\t\t[86.21371504000007, 20.04242584800005],\n\t\t\t\t[86.23023522200003, 20.035305080000057],\n\t\t\t\t[86.26856530000003, 20.02643463700008],\n\t\t\t\t[86.27344811300003, 20.026190497000073],\n\t\t\t\t[86.28467858200008, 20.027492580000057],\n\t\t\t\t[86.28907311300003, 20.02643463700008],\n\t\t\t\t[86.29322350400008, 20.021429755000042],\n\t\t\t\t[86.29411868600005, 20.015692450000074],\n\t\t\t\t[86.29420006600003, 20.01040273600006],\n\t\t\t\t[86.29590905000003, 20.00657786700009],\n\t\t\t\t[86.30290774800005, 19.99909088700008],\n\t\t\t\t[86.30811608200008, 19.99209219000005],\n\t\t\t\t[86.31495201900003, 19.986883856000077],\n\t\t\t\t[86.32667076900003, 19.984849351000037],\n\t\t\t\t[86.34156334700003, 19.97988515800006],\n\t\t\t\t[86.35645592500003, 19.970404364000046],\n\t\t\t\t[86.37240644600007, 19.964992580000057],\n\t\t\t\t[86.26856530000003, 19.91034577000005],\n\t\t\t\t[86.11158287900008, 19.85569896000004],\n\t\t\t\t[86.08904056100005, 19.844224351000037],\n\t\t\t\t[86.07837975400008, 19.843573309000078],\n\t\t\t\t[86.06674238400007, 19.851996161000045],\n\t\t\t\t[86.05665123800003, 19.85687897300005],\n\t\t\t\t[86.04656009200005, 19.85252513200004],\n\t\t\t\t[86.03793379000007, 19.84528229400007],\n\t\t\t\t[86.03207441500007, 19.841498114000046],\n\t\t\t\t[86.01351972700007, 19.839056708000044],\n\t\t\t\t[85.88884524800005, 19.80296458500004],\n\t\t\t\t[85.84636478000004, 19.795843817000048],\n\t\t\t\t[85.80860436300003, 19.773382880000042],\n\t\t\t\t[85.78882897200003, 19.765692450000074],\n\t\t\t\t[85.77808678500003, 19.76463450700004],\n\t\t\t\t[85.74439537900008, 19.765692450000074],\n\t\t\t\t[85.73438561300003, 19.763617255000042],\n\t\t\t\t[85.71485436300003, 19.75421784100007],\n\t\t\t\t[85.68458092500003, 19.747748114000046],\n\t\t\t\t[85.62427819100003, 19.718573309000078],\n\t\t\t\t[85.62598717500003, 19.72288646000004],\n\t\t\t\t[85.63599694100003, 19.726629950000074],\n\t\t\t\t[85.63795006600003, 19.731634833000044],\n\t\t\t\t[85.61426842500003, 19.72793203300006],\n\t\t\t\t[85.54916425900007, 19.690619208000044],\n\t\t\t\t[85.48047936300003, 19.66632721600007],\n\t\t\t\t[85.45679772200003, 19.663316148000035],\n\t\t\t\t[85.44988040500004, 19.66669342700004],\n\t\t\t\t[85.44752037900008, 19.674627997000073],\n\t\t\t\t[85.44678795700008, 19.690619208000044],\n\t\t\t\t[85.44312584700003, 19.69245026200008],\n\t\t\t\t[85.43685957100007, 19.691351630000042],\n\t\t\t\t[85.43043053500003, 19.69171784100007],\n\t\t\t\t[85.42628014400003, 19.69745514500005],\n\t\t\t\t[85.42701256600003, 19.70408763200004],\n\t\t\t\t[85.43165123800003, 19.704901434000078],\n\t\t\t\t[85.43685957100007, 19.70465729400007],\n\t\t\t\t[85.43930097700007, 19.70799388200004],\n\t\t\t\t[85.45085696700005, 19.71629466400009],\n\t\t\t\t[85.47754967500003, 19.723863023000035],\n\t\t\t\t[85.52198326900003, 19.739081122000073],\n\t\t\t\t[85.52556399800005, 19.734035549000055],\n\t\t\t\t[85.52344811300003, 19.72870514500005],\n\t\t\t\t[85.51889082100007, 19.721584377000056],\n\t\t\t\t[85.51498457100007, 19.71112702000005],\n\t\t\t\t[85.55884850400008, 19.738104559000078],\n\t\t\t\t[85.57650800900007, 19.745835679000038],\n\t\t\t\t[85.56763756600003, 19.750799872000073],\n\t\t\t\t[85.56324303500003, 19.75690338700008],\n\t\t\t\t[85.56413821700005, 19.76439036700009],\n\t\t\t\t[85.57032311300003, 19.773179429000038],\n\t\t\t\t[85.56714928500003, 19.79165273600006],\n\t\t\t\t[85.57032311300003, 19.87563711100006],\n\t\t\t\t[85.55713951900003, 19.881781317000048],\n\t\t\t\t[85.51498457100007, 19.88930898600006],\n\t\t\t\t[85.47681725400008, 19.90102773600006],\n\t\t\t\t[85.46355228000004, 19.902899481000077],\n\t\t\t\t[85.44011478000004, 19.896226304000038],\n\t\t\t\t[85.41627037900008, 19.879787502000056],\n\t\t\t\t[85.37452233200008, 19.83779531500005],\n\t\t\t\t[85.31959069100003, 19.79364655200004],\n\t\t\t\t[85.30420983200008, 19.792669989000046],\n\t\t\t\t[85.29029381600003, 19.789943752000056],\n\t\t\t\t[85.27808678500003, 19.785589911000045],\n\t\t\t\t[85.26807701900003, 19.78001536700009],\n\t\t\t\t[85.24683678500003, 19.762640692000048],\n\t\t\t\t[85.22095787900008, 19.736029364000046],\n\t\t\t\t[85.20337975400008, 19.70726146000004],\n\t\t\t\t[85.20655358200008, 19.68378327000005],\n\t\t\t\t[85.18995201900003, 19.67096588700008],\n\t\t\t\t[85.17514082100007, 19.63690827000005],\n\t\t\t\t[85.16553795700008, 19.625799872000073],\n\t\t\t\t[85.15015709700003, 19.61347077000005],\n\t\t\t\t[85.14014733200008, 19.596584377000056],\n\t\t\t\t[85.13933353000004, 19.579779364000046],\n\t\t\t\t[85.15137780000003, 19.56777578300006],\n\t\t\t\t[85.15137780000003, 19.560288804000038],\n\t\t\t\t[85.13917076900003, 19.557074286000045],\n\t\t\t\t[85.12289472700007, 19.54901764500005],\n\t\t\t\t[85.10889733200008, 19.53896719000005],\n\t\t\t\t[85.10287519600007, 19.52960846600007],\n\t\t\t\t[85.10450280000003, 19.514878648000035],\n\t\t\t\t[85.10873457100007, 19.506781317000048],\n\t\t\t\t[85.11548912900008, 19.507473049000055],\n\t\t\t\t[85.12403405000003, 19.519354559000078],\n\t\t\t\t[85.12875410200007, 19.509507554000038],\n\t\t\t\t[85.13021894600007, 19.49872467700004],\n\t\t\t\t[85.12867272200003, 19.487982489000046],\n\t\t\t\t[85.12403405000003, 19.478338934000078],\n\t\t\t\t[85.13575280000003, 19.481594143000052],\n\t\t\t\t[85.14177493600005, 19.487127997000073],\n\t\t\t\t[85.14576256600003, 19.493475653000075],\n\t\t\t\t[85.15137780000003, 19.498846747000073],\n\t\t\t\t[85.16244550900007, 19.50348541900007],\n\t\t\t\t[85.17115319100003, 19.504461981000077],\n\t\t\t\t[85.17855879000007, 19.504299221000053],\n\t\t\t\t[85.18555748800003, 19.505682684000078],\n\t\t\t\t[85.20289147200003, 19.51715729400007],\n\t\t\t\t[85.20191491000003, 19.527085679000038],\n\t\t\t\t[85.19629967500003, 19.53847890800006],\n\t\t\t\t[85.19922936300003, 19.55410390800006],\n\t\t\t\t[85.20630944100003, 19.548000393000052],\n\t\t\t\t[85.21452884200005, 19.547267971000053],\n\t\t\t\t[85.22364342500003, 19.549953518000052],\n\t\t\t\t[85.23324629000007, 19.55410390800006],\n\t\t\t\t[85.20378665500004, 19.57050202000005],\n\t\t\t\t[85.19304446700005, 19.573919989000046],\n\t\t\t\t[85.19304446700005, 19.58079661700009],\n\t\t\t\t[85.21290123800003, 19.58112213700008],\n\t\t\t\t[85.22364342500003, 19.590236721000053],\n\t\t\t\t[85.23259524800005, 19.60154857000009],\n\t\t\t\t[85.24756920700008, 19.608710028000075],\n\t\t\t\t[85.24756920700008, 19.614935614000046],\n\t\t\t\t[85.24187259200005, 19.617010809000078],\n\t\t\t\t[85.23731530000003, 19.62055084800005],\n\t\t\t\t[85.23438561300003, 19.62567780200004],\n\t\t\t\t[85.23324629000007, 19.632554429000038],\n\t\t\t\t[85.23633873800003, 19.635321356000077],\n\t\t\t\t[85.24781334700003, 19.653143622000073],\n\t\t\t\t[85.24756920700008, 19.65648021000004],\n\t\t\t\t[85.26075280000003, 19.656073309000078],\n\t\t\t\t[85.30909264400003, 19.642238674000055],\n\t\t\t\t[85.35059655000003, 19.67763906500005],\n\t\t\t\t[85.36378014400003, 19.67804596600007],\n\t\t\t\t[85.37435957100007, 19.674709377000056],\n\t\t\t\t[85.38306725400008, 19.67609284100007],\n\t\t\t\t[85.39144941500007, 19.690619208000044],\n\t\t\t\t[85.39918053500003, 19.67914459800005],\n\t\t\t\t[85.40316816500007, 19.67129140800006],\n\t\t\t\t[85.40495853000004, 19.661932684000078],\n\t\t\t\t[85.40528405000003, 19.64594147300005],\n\t\t\t\t[85.40219160200007, 19.64398834800005],\n\t\t\t\t[85.38868248800003, 19.63825104400007],\n\t\t\t\t[85.38461347700007, 19.635972398000035],\n\t\t\t\t[85.38217207100007, 19.63108958500004],\n\t\t\t\t[85.38038170700008, 19.619614976000037],\n\t\t\t\t[85.37794030000003, 19.614935614000046],\n\t\t\t\t[85.36841881600003, 19.60809967700004],\n\t\t\t\t[85.35230553500003, 19.599432684000078],\n\t\t\t\t[85.33676191500007, 19.596096096000053],\n\t\t\t\t[85.33008873800003, 19.60496653900009],\n\t\t\t\t[85.32642662900008, 19.618801174000055],\n\t\t\t\t[85.31836998800003, 19.619533596000053],\n\t\t\t\t[85.31104576900003, 19.610500393000052],\n\t\t\t\t[85.30909264400003, 19.595038153000075],\n\t\t\t\t[85.30347741000003, 19.597479559000078],\n\t\t\t\t[85.29379316500007, 19.599554755000042],\n\t\t\t\t[85.28842207100007, 19.601263739000046],\n\t\t\t\t[85.30250084700003, 19.58665599200009],\n\t\t\t\t[85.30583743600005, 19.580145575000074],\n\t\t\t\t[85.30290774800005, 19.573919989000046],\n\t\t\t\t[85.33057701900003, 19.57640208500004],\n\t\t\t\t[85.57650800900007, 19.690619208000044],\n\t\t\t\t[85.54029381600003, 19.669582424000055],\n\t\t\t\t[85.46338951900003, 19.63104889500005],\n\t\t\t\t[85.38021894600007, 19.593817450000074],\n\t\t\t\t[85.33668053500003, 19.57518138200004],\n\t\t\t\t[85.28541100400008, 19.536281643000052],\n\t\t\t\t[85.24057050900007, 19.518052476000037],\n\t\t\t\t[85.18043053500003, 19.475002346000053],\n\t\t\t\t[85.06950931100005, 19.37213776200008],\n\t\t\t\t[84.99586022200003, 19.32330963700008],\n\t\t\t\t[84.87208092500003, 19.219875393000052],\n\t\t\t\t[84.79102623800003, 19.12059153900009],\n\t\t\t\t[84.77776126400005, 19.11619700700004],\n\t\t\t\t[84.77515709700003, 19.115301825000074],\n\t\t\t\t[84.76441491000003, 19.123439846000053],\n\t\t\t\t[84.75066165500004, 19.138373114000046],\n\t\t\t\t[84.73878014400003, 19.147650458000044],\n\t\t\t\t[84.73365319100003, 19.139146226000037],\n\t\t\t\t[84.73121178500003, 19.12881094000005],\n\t\t\t\t[84.72095787900008, 19.11424388200004],\n\t\t\t\t[84.71998131600003, 19.101629950000074],\n\t\t\t\t[84.72282962300005, 19.09601471600007],\n\t\t\t\t[84.73536217500003, 19.083197333000044],\n\t\t\t\t[84.74048912900008, 19.07367584800005],\n\t\t\t\t[84.75684655000003, 19.09764232000009],\n\t\t\t\t[84.76099694100003, 19.101629950000074],\n\t\t\t\t[84.76783287900008, 19.10179271000004],\n\t\t\t\t[84.77523847700007, 19.100490627000056],\n\t\t\t\t[84.78003991000003, 19.09707265800006],\n\t\t\t\t[84.77833092500003, 19.091009833000044],\n\t\t\t\t[84.75114993600005, 19.053900458000044],\n\t\t\t\t[84.74105879000007, 19.028143622000073],\n\t\t\t\t[84.69947350400008, 18.977484442000048],\n\t\t\t\t[84.67953535200007, 18.945705471000053],\n\t\t\t\t[84.66504967500003, 18.930121161000045],\n\t\t\t\t[84.63086998800003, 18.915716864000046],\n\t\t\t\t[84.54786217500003, 18.796087958000044],\n\t\t\t\t[84.54184004000007, 18.775783596000053],\n\t\t\t\t[84.44825280000003, 18.68065013200004],\n\t\t\t\t[84.43718509200005, 18.66278717700004],\n\t\t\t\t[84.43262780000003, 18.645697333000044],\n\t\t\t\t[84.42367597700007, 18.636460679000038],\n\t\t\t\t[84.37045332100007, 18.601304429000038],\n\t\t\t\t[84.34945722700007, 18.56981028900009],\n\t\t\t\t[84.33285566500007, 18.55369700700004],\n\t\t\t\t[84.31226647200003, 18.546698309000078],\n\t\t\t\t[84.30632571700005, 18.54368724200009],\n\t\t\t\t[84.28858483200008, 18.529771226000037],\n\t\t\t\t[84.28174889400003, 18.52558014500005],\n\t\t\t\t[84.27271569100003, 18.524318752000056],\n\t\t\t\t[84.25001061300003, 18.524237372000073],\n\t\t\t\t[84.24691816500007, 18.52558014500005],\n\t\t\t\t[84.23764082100007, 18.510931708000044],\n\t\t\t\t[84.24935957100007, 18.501654364000046],\n\t\t\t\t[84.27100670700008, 18.50018952000005],\n\t\t\t\t[84.29769941500007, 18.51630280200004],\n\t\t\t\t[84.32618248800003, 18.53742096600007],\n\t\t\t\t[84.34994550900007, 18.55292389500005],\n\t\t\t\t[84.33122806100005, 18.53864166900007],\n\t\t\t\t[84.28793379000007, 18.50576406500005],\n\t\t\t\t[84.24008222700007, 18.460760809000078],\n\t\t\t\t[84.23047936300003, 18.446234442000048],\n\t\t\t\t[84.18832441500007, 18.418036200000074],\n\t\t\t\t[84.17448978000004, 18.39984772300005],\n\t\t\t\t[84.15284264400003, 18.383612372000073],\n\t\t\t\t[84.14389082100007, 18.374823309000078],\n\t\t\t\t[84.13892662900008, 18.364162502000056],\n\t\t\t\t[84.13648522200003, 18.353583075000074],\n\t\t\t\t[84.13282311300003, 18.343410549000055],\n\t\t\t\t[84.12403405000003, 18.333807684000078],\n\t\t\t\t[84.11312910200007, 18.29828522300005],\n\t\t\t\t[84.07740319100003, 18.271551825000074],\n\t\t\t\t[83.77515709700003, 18.139593817000048],\n\t\t\t\t[83.61394290500004, 18.04515208500004],\n\t\t\t\t[83.58228600400008, 18.01911041900007],\n\t\t\t\t[83.57618248800003, 18.00975169500009],\n\t\t\t\t[83.56283613400007, 17.98309967700004],\n\t\t\t\t[83.55836022200003, 17.97752513200004],\n\t\t\t\t[83.55665123800003, 17.973456122000073],\n\t\t\t\t[83.53891035200007, 17.956284898000092],\n\t\t\t\t[83.53443444100003, 17.95331452000005],\n\t\t\t\t[83.52613366000003, 17.942531643000052],\n\t\t\t\t[83.48658287900008, 17.916896877000056],\n\t\t\t\t[83.47291100400008, 17.902492580000057],\n\t\t\t\t[83.46558678500003, 17.902492580000057],\n\t\t\t\t[83.46290123800003, 17.90851471600007],\n\t\t\t\t[83.45191491000003, 17.92291901200008],\n\t\t\t\t[83.44898522200003, 17.90688711100006],\n\t\t\t\t[83.45240319100003, 17.88621653900009],\n\t\t\t\t[83.45297285200007, 17.868475653000075],\n\t\t\t\t[83.43116295700008, 17.85423411700009],\n\t\t\t\t[83.42530358200008, 17.83860911700009],\n\t\t\t\t[83.41773522200003, 17.80621979400007],\n\t\t\t\t[83.40235436300003, 17.784491278000075],\n\t\t\t\t[83.34131920700008, 17.71743398600006],\n\t\t\t\t[83.31910241000003, 17.703192450000074],\n\t\t\t\t[83.31324303500003, 17.70115794500009],\n\t\t\t\t[83.30437259200005, 17.692206122000073],\n\t\t\t\t[83.29859459700003, 17.69013092700004],\n\t\t\t\t[83.29273522200003, 17.691148179000038],\n\t\t\t\t[83.28956139400003, 17.69326406500005],\n\t\t\t\t[83.28744550900007, 17.695379950000074],\n\t\t\t\t[83.28467858200008, 17.69635651200008],\n\t\t\t\t[83.28223717500003, 17.699286200000074],\n\t\t\t\t[83.28028405000003, 17.705959377000056],\n\t\t\t\t[83.27637780000003, 17.71308014500005],\n\t\t\t\t[83.26823978000004, 17.71747467700004],\n\t\t\t\t[83.24691816500007, 17.71625397300005],\n\t\t\t\t[83.24203535200007, 17.70652903900009],\n\t\t\t\t[83.24927819100003, 17.695379950000074],\n\t\t\t\t[83.27198326900003, 17.68813711100006],\n\t\t\t\t[83.29249108200008, 17.677476304000038],\n\t\t\t\t[83.29859459700003, 17.672796942000048],\n\t\t\t\t[83.29908287900008, 17.66429271000004],\n\t\t\t\t[83.28923587300005, 17.65761953300006],\n\t\t\t\t[83.26823978000004, 17.648586330000057],\n\t\t\t\t[83.25513756600003, 17.63812897300005],\n\t\t\t\t[83.24691816500007, 17.63422272300005],\n\t\t\t\t[83.21290123800003, 17.634914455000057],\n\t\t\t\t[83.23389733200008, 17.60773346600007],\n\t\t\t\t[83.23894290500004, 17.592962958000044],\n\t\t\t\t[83.22291100400008, 17.586493231000077],\n\t\t\t\t[83.20923912900008, 17.583685614000046],\n\t\t\t\t[83.19613691500007, 17.57680898600006],\n\t\t\t\t[83.17139733200008, 17.559800523000092],\n\t\t\t\t[83.08822675900007, 17.53070709800005],\n\t\t\t\t[83.05323326900003, 17.50649648600006],\n\t\t\t\t[83.01986738400007, 17.49091217700004],\n\t\t\t\t[82.99642988400007, 17.473456122000073],\n\t\t\t\t[82.97584069100003, 17.453680731000077],\n\t\t\t\t[82.96957441500007, 17.450100002000056],\n\t\t\t\t[82.95281009200005, 17.44594961100006],\n\t\t\t\t[82.94548587300005, 17.443101304000038],\n\t\t\t\t[82.89682050900007, 17.409328518000052],\n\t\t\t\t[82.88868248800003, 17.41014232000009],\n\t\t\t\t[82.88331139400003, 17.42206452000005],\n\t\t\t\t[82.86915123800003, 17.414007880000042],\n\t\t\t\t[82.85425866000008, 17.402818101000037],\n\t\t\t\t[82.83765709700003, 17.39276764500005],\n\t\t\t\t[82.79639733200008, 17.38304271000004],\n\t\t\t\t[82.75814863400007, 17.359198309000078],\n\t\t\t\t[82.71851647200003, 17.34861888200004],\n\t\t\t\t[82.47486412900008, 17.205959377000056],\n\t\t\t\t[82.45191491000008, 17.182440497000073],\n\t\t\t\t[82.43506920700008, 17.15379466400009],\n\t\t\t\t[82.42286217500003, 17.139960028000075],\n\t\t\t\t[82.38770592500003, 17.12693919500009],\n\t\t\t\t[82.37037194100003, 17.11009349200009],\n\t\t\t\t[82.34205162900008, 17.073187567000048],\n\t\t\t\t[82.31169681100005, 17.046616929000038],\n\t\t\t\t[82.29932701900003, 17.03034088700008],\n\t\t\t\t[82.29167728000004, 16.998439846000053],\n\t\t\t\t[82.25269616000008, 16.92918528900009],\n\t\t\t\t[82.25074303500008, 16.907863674000055],\n\t\t\t\t[82.25513756600003, 16.885321356000077],\n\t\t\t\t[82.26791425900007, 16.86749909100007],\n\t\t\t\t[82.29835045700008, 16.85846588700008],\n\t\t\t\t[82.30355879000007, 16.85419342700004],\n\t\t\t\t[82.30811608200008, 16.849554755000042],\n\t\t\t\t[82.31421959700003, 16.846625067000048],\n\t\t\t\t[82.31959069100003, 16.84723541900007],\n\t\t\t\t[82.32715905000003, 16.849432684000078],\n\t\t\t\t[82.33334394600007, 16.852118231000077],\n\t\t\t\t[82.33464603000004, 16.854071356000077],\n\t\t\t\t[82.35206139400003, 16.845404364000046],\n\t\t\t\t[82.36247806100005, 16.859076239000046],\n\t\t\t\t[82.36117597700007, 16.89134349200009],\n\t\t\t\t[82.35743248800003, 16.92487213700008],\n\t\t\t\t[82.34888756600003, 16.95648834800005],\n\t\t\t\t[82.36117597700007, 16.936021226000037],\n\t\t\t\t[82.36654707100007, 16.908636786000045],\n\t\t\t\t[82.36744225400008, 16.860296942000048],\n\t\t\t\t[82.36557050900007, 16.81159088700008],\n\t\t\t\t[82.35206139400003, 16.76129791900007],\n\t\t\t\t[82.34595787900008, 16.70612213700008],\n\t\t\t\t[82.33814537900008, 16.67841217700004],\n\t\t\t\t[82.31421959700003, 16.628159898000092],\n\t\t\t\t[82.31234785200007, 16.61985911700009],\n\t\t\t\t[82.31381269600007, 16.612982489000046],\n\t\t\t\t[82.31283613400007, 16.60814036700009],\n\t\t\t\t[82.30396569100003, 16.60643138200004],\n\t\t\t\t[82.29932701900003, 16.61009349200009],\n\t\t\t\t[82.29379316500007, 16.62563711100006],\n\t\t\t\t[82.28687584700003, 16.628159898000092],\n\t\t\t\t[82.28093509200005, 16.620835679000038],\n\t\t\t\t[82.28549238400007, 16.60651276200008],\n\t\t\t\t[82.29607181100005, 16.591009833000044],\n\t\t\t\t[82.30738366000008, 16.579779364000046],\n\t\t\t\t[82.25904381600003, 16.56549713700008],\n\t\t\t\t[82.20346113400007, 16.51268138200004],\n\t\t\t\t[82.18824303500008, 16.504055080000057],\n\t\t\t\t[82.17302493600005, 16.500921942000048],\n\t\t\t\t[82.12289472700007, 16.477362372000073],\n\t\t\t\t[82.09066816500007, 16.454779364000046],\n\t\t\t\t[82.06861412900008, 16.444281317000048],\n\t\t\t\t[82.03736412900008, 16.447658596000053],\n\t\t\t\t[82.02271569100003, 16.43573639500005],\n\t\t\t\t[82.00782311300003, 16.419582424000055],\n\t\t\t\t[81.99268639400003, 16.40843333500004],\n\t\t\t\t[81.98170006600003, 16.407863674000055],\n\t\t\t\t[81.96794681100005, 16.40892161700009],\n\t\t\t\t[81.95622806100005, 16.407171942000048],\n\t\t\t\t[81.94809004000007, 16.391546942000048],\n\t\t\t\t[81.94076582100007, 16.388373114000046],\n\t\t\t\t[81.89991295700008, 16.38580963700008],\n\t\t\t\t[81.88054446700005, 16.381659247000073],\n\t\t\t\t[81.86166425900007, 16.375392971000053],\n\t\t\t\t[81.78321373800003, 16.33856842700004],\n\t\t\t\t[81.76295006600003, 16.32257721600007],\n\t\t\t\t[81.71762129000007, 16.312201239000046],\n\t\t\t\t[81.71159915500004, 16.312201239000046],\n\t\t\t\t[81.69605553500008, 16.314927476000037],\n\t\t\t\t[81.67693118600005, 16.327378648000092],\n\t\t\t\t[81.65626061300003, 16.33734772300005],\n\t\t\t\t[81.63640384200005, 16.33270905200004],\n\t\t\t\t[81.62094160200007, 16.339504299000055],\n\t\t\t\t[81.58497155000003, 16.34210846600007],\n\t\t\t\t[81.56812584700003, 16.34638092700004],\n\t\t\t\t[81.57390384200005, 16.358343817000048],\n\t\t\t\t[81.56918379000007, 16.367580471000053],\n\t\t\t\t[81.55697675900007, 16.37303294500009],\n\t\t\t\t[81.54021243600005, 16.37368398600006],\n\t\t\t\t[81.54908287900008, 16.352362372000073],\n\t\t\t\t[81.53598066500007, 16.350043036000045],\n\t\t\t\t[81.49586022200003, 16.360663153000075],\n\t\t\t\t[81.47535241000008, 16.358628648000092],\n\t\t\t\t[81.41667728000004, 16.34015534100007],\n\t\t\t\t[81.42115319100003, 16.35097890800006],\n\t\t\t\t[81.42611738400007, 16.358710028000075],\n\t\t\t\t[81.42823326900003, 16.365668036000045],\n\t\t\t\t[81.42408287900008, 16.37368398600006],\n\t\t\t\t[81.41138756600003, 16.382513739000046],\n\t\t\t\t[81.39893639400003, 16.382635809000078],\n\t\t\t\t[81.38697350400008, 16.376776434000078],\n\t\t\t\t[81.37574303500008, 16.36749909100007],\n\t\t\t\t[81.35962975400008, 16.374335028000075],\n\t\t\t\t[81.34522545700008, 16.373602606000077],\n\t\t\t\t[81.33155358200008, 16.36977773600006],\n\t\t\t\t[81.31739342500003, 16.36749909100007],\n\t\t\t\t[81.25961347700007, 16.33270905200004],\n\t\t\t\t[81.24854576900003, 16.320135809000078],\n\t\t\t\t[81.24984785200007, 16.311021226000037],\n\t\t\t\t[81.25603274800005, 16.30182526200008],\n\t\t\t\t[81.25961347700007, 16.28864166900007],\n\t\t\t\t[81.25416100400008, 16.271307684000078],\n\t\t\t\t[81.23031660200007, 16.24359772300005],\n\t\t\t\t[81.21851647200003, 16.19944896000004],\n\t\t\t\t[81.19027754000007, 16.13886139500005],\n\t\t\t\t[81.18002363400007, 16.086737372000073],\n\t\t\t\t[81.16195722700007, 16.057074286000045],\n\t\t\t\t[81.15601647200003, 16.03851959800005],\n\t\t\t\t[81.15544681100005, 15.985500393000052],\n\t\t\t\t[81.14975019600007, 15.969631252000056],\n\t\t\t\t[81.13510175900007, 15.966498114000046],\n\t\t\t\t[81.08822675900007, 15.921210028000075],\n\t\t\t\t[81.04330488400007, 15.894110419000071],\n\t\t\t\t[81.02686608200008, 15.88084544500009],\n\t\t\t\t[80.99887129000007, 15.84674713700008],\n\t\t\t\t[80.99838300900007, 15.83470286700009],\n\t\t\t\t[81.00294030000003, 15.82526276200008],\n\t\t\t\t[81.00879967500003, 15.81781647300005],\n\t\t\t\t[81.01254316500007, 15.81195709800005],\n\t\t\t\t[81.01921634200005, 15.792385158000059],\n\t\t\t\t[81.01905358200008, 15.78416575700004],\n\t\t\t\t[81.01254316500007, 15.777818101000037],\n\t\t\t\t[81.00473066500007, 15.778509833000044],\n\t\t\t\t[80.99586022200003, 15.784328518000052],\n\t\t\t\t[80.98829186300003, 15.791205145000049],\n\t\t\t\t[80.97901451900003, 15.803412177000041],\n\t\t\t\t[80.94947350400008, 15.827866929000038],\n\t\t\t\t[80.94068444100003, 15.83299388200004],\n\t\t\t\t[80.92164147200003, 15.83860911700009],\n\t\t\t\t[80.91000410200007, 15.852687893000052],\n\t\t\t\t[80.90430748800003, 15.871283270000049],\n\t\t\t\t[80.90267988400007, 15.890814520000049],\n\t\t\t\t[80.91016686300003, 15.96588776200008],\n\t\t\t\t[80.90894616000008, 15.98346588700008],\n\t\t\t\t[80.90601647200003, 15.999823309000078],\n\t\t\t\t[80.89649498800003, 16.031073309000078],\n\t\t\t\t[80.89226321700005, 16.02094147300005],\n\t\t\t\t[80.89649498800003, 16.010565497000073],\n\t\t\t\t[80.88900800900007, 16.003729559000078],\n\t\t\t\t[80.88575280000003, 16.008693752000056],\n\t\t\t\t[80.88282311300003, 16.011460679000038],\n\t\t\t\t[80.87533613400007, 16.017401434000078],\n\t\t\t\t[80.89128665500004, 15.978257554000038],\n\t\t\t\t[80.89576256600003, 15.936021226000037],\n\t\t\t\t[80.89014733200008, 15.89524974200009],\n\t\t\t\t[80.85572350400008, 15.822699286000045],\n\t\t\t\t[80.83025149800005, 15.747626044000071],\n\t\t\t\t[80.82007897200003, 15.72687409100007],\n\t\t\t\t[80.80713951900003, 15.716376044000071],\n\t\t\t\t[80.80836022200003, 15.803941148000092],\n\t\t\t\t[80.80274498800003, 15.84243398600006],\n\t\t\t\t[80.77613366000008, 15.884263414000088],\n\t\t\t\t[80.76010175900007, 15.892971096000053],\n\t\t\t\t[80.73633873800003, 15.897609768000052],\n\t\t\t\t[80.69044030000003, 15.90070221600007],\n\t\t\t\t[80.68246504000007, 15.903265692000048],\n\t\t\t\t[80.67628014400003, 15.907171942000048],\n\t\t\t\t[80.67017662900008, 15.907700914000088],\n\t\t\t\t[80.66309655000003, 15.90070221600007],\n\t\t\t\t[80.66041100400008, 15.893947658000059],\n\t\t\t\t[80.66285241000008, 15.889349677000041],\n\t\t\t\t[80.61841881600003, 15.88768138200004],\n\t\t\t\t[80.60010826900003, 15.882228908000059],\n\t\t\t\t[80.58432050900007, 15.872544664000088],\n\t\t\t\t[80.57113691500007, 15.868719794000071],\n\t\t\t\t[80.56072024800005, 15.88084544500009],\n\t\t\t\t[80.55388431100005, 15.88084544500009],\n\t\t\t\t[80.54167728000004, 15.868068752000056],\n\t\t\t\t[80.52588951900003, 15.856919664000088],\n\t\t\t\t[80.49187259200005, 15.839260158000059],\n\t\t\t\t[80.48267662900008, 15.836411851000037],\n\t\t\t\t[80.47559655000003, 15.83592357000009],\n\t\t\t\t[80.46908613400007, 15.834662177000041],\n\t\t\t\t[80.46143639400003, 15.829657294000071],\n\t\t\t\t[80.44548587300005, 15.814398505000042],\n\t\t\t\t[80.43628991000008, 15.808294989000046],\n\t\t\t\t[80.39332116000008, 15.797023830000057],\n\t\t\t\t[80.35962975400008, 15.775824286000045],\n\t\t\t\t[80.27963300900007, 15.700669664000088],\n\t\t\t\t[80.26319420700008, 15.67454661700009],\n\t\t\t\t[80.21949303500008, 15.56745026200008],\n\t\t\t\t[80.21745853000004, 15.548163153000075],\n\t\t\t\t[80.20134524800005, 15.51829661700009],\n\t\t\t\t[80.19760175900007, 15.503078518000052],\n\t\t\t\t[80.21119225400008, 15.496649481000077],\n\t\t\t\t[80.20045006600003, 15.482163804000038],\n\t\t\t\t[80.18384850400008, 15.452297268000052],\n\t\t\t\t[80.17286217500003, 15.438299872000073],\n\t\t\t\t[80.14031009200005, 15.406398830000057],\n\t\t\t\t[80.12680097700007, 15.38812897300005],\n\t\t\t\t[80.12126712300005, 15.370021877000056],\n\t\t\t\t[80.09058678500008, 15.304877020000049],\n\t\t\t\t[80.09253991000008, 15.296576239000046],\n\t\t\t\t[80.08236738400007, 15.20408763200004],\n\t\t\t\t[80.05298912900008, 15.092596747000073],\n\t\t\t\t[80.05453535200007, 15.014146226000037],\n\t\t\t\t[80.06153405000003, 14.974676825000074],\n\t\t\t\t[80.07341556100005, 14.94204336100006],\n\t\t\t\t[80.07300866000008, 14.92055898600006],\n\t\t\t\t[80.10515384200005, 14.763861395000049],\n\t\t\t\t[80.10816491000008, 14.714341539000088],\n\t\t\t\t[80.11068769600007, 14.704779364000046],\n\t\t\t\t[80.11695397200003, 14.698146877000056],\n\t\t\t\t[80.12818444100003, 14.68846263200004],\n\t\t\t\t[80.15186608200008, 14.672796942000048],\n\t\t\t\t[80.15984134200005, 14.662665106000077],\n\t\t\t\t[80.16635175900007, 14.628159898000092],\n\t\t\t\t[80.17359459700003, 14.616522528000075],\n\t\t\t\t[80.17847741000008, 14.60578034100007],\n\t\t\t\t[80.17595462300005, 14.592962958000044],\n\t\t\t\t[80.16968834700003, 14.58584219000005],\n\t\t\t\t[80.16089928500008, 14.579820054000038],\n\t\t\t\t[80.14185631600003, 14.571234442000048],\n\t\t\t\t[80.14918053500008, 14.565008856000077],\n\t\t\t\t[80.15935306100005, 14.565741278000075],\n\t\t\t\t[80.18327884200005, 14.571112372000073],\n\t\t\t\t[80.19019616000008, 14.571234442000048],\n\t\t\t\t[80.19695071700005, 14.565008856000077],\n\t\t\t\t[80.19605553500008, 14.559027411000045],\n\t\t\t\t[80.19239342500003, 14.553208726000037],\n\t\t\t\t[80.19019616000008, 14.54759349200009],\n\t\t\t\t[80.18824303500008, 14.52570221600007],\n\t\t\t\t[80.17595462300005, 14.46873607000009],\n\t\t\t\t[80.17872155000003, 14.38939036700009],\n\t\t\t\t[80.17497806100005, 14.344549872000073],\n\t\t\t\t[80.15943444100003, 14.324774481000077],\n\t\t\t\t[80.13705488400007, 14.269924221000053],\n\t\t\t\t[80.12818444100003, 14.256537177000041],\n\t\t\t\t[80.09791100400008, 14.254299221000053],\n\t\t\t\t[80.08716881600003, 14.25031159100007],\n\t\t\t\t[80.07178795700008, 14.232245184000078],\n\t\t\t\t[80.07007897200003, 14.229193427000041],\n\t\t\t\t[80.05502363400007, 14.221584377000056],\n\t\t\t\t[80.04664147200003, 14.206610419000071],\n\t\t\t\t[80.05062910200007, 14.196112372000073],\n\t\t\t\t[80.07349694100003, 14.201849677000041],\n\t\t\t\t[80.09099368600005, 14.216742255000042],\n\t\t\t\t[80.10661868600005, 14.234035549000055],\n\t\t\t\t[80.12110436300003, 14.242010809000078],\n\t\t\t\t[80.13559004000007, 14.229193427000041],\n\t\t\t\t[80.12338300900007, 14.193508205000057],\n\t\t\t\t[80.12582441500007, 14.148504950000074],\n\t\t\t\t[80.14966881600003, 14.027736721000053],\n\t\t\t\t[80.159605204927, 14]\n\t\t\t]\n\t\t]\n\t},\n\t\"bangladesh\": {\n\t\t\"stop\": 0.897488737517874,\n\t\t\"anchor\": [89.83003108960874, 23.720784795521794],\n\t\t\"border\": [\n\t\t\t[\n\t\t\t\t[92.57587854000013, 21.977574362000027],\n\t\t\t\t[92.59024458800008, 21.91716461200012],\n\t\t\t\t[92.59303511600012, 21.886933899000027],\n\t\t\t\t[92.57556848200005, 21.73397166000005],\n\t\t\t\t[92.59024458800008, 21.49553660100007],\n\t\t\t\t[92.59272505700005, 21.470163472000067],\n\t\t\t\t[92.60326704900007, 21.42008901000007],\n\t\t\t\t[92.63923384600008, 21.3186998500001],\n\t\t\t\t[92.64103990600012, 21.30858591800002],\n\t\t\t\t[92.64285119700003, 21.298442688000094],\n\t\t\t\t[92.63375614400007, 21.28221628900009],\n\t\t\t\t[92.61432580600007, 21.26314768500002],\n\t\t\t\t[92.59086470600005, 21.248884990000036],\n\t\t\t\t[92.57060754400004, 21.247283020000012],\n\t\t\t\t[92.55872196500007, 21.259840393000033],\n\t\t\t\t[92.55159061700004, 21.28051096600005],\n\t\t\t\t[92.54394250500008, 21.320921937000023],\n\t\t\t\t[92.52451216700007, 21.361126201000033],\n\t\t\t\t[92.49867395000007, 21.366603902000023],\n\t\t\t\t[92.46539432800012, 21.35983429],\n\t\t\t\t[92.42312300700013, 21.363658345000132],\n\t\t\t\t[92.40028202400003, 21.370996400000124],\n\t\t\t\t[92.38963667800004, 21.37652577800013],\n\t\t\t\t[92.38116174400005, 21.384794006000064],\n\t\t\t\t[92.37423710100006, 21.40231231800003],\n\t\t\t\t[92.37217004400003, 21.419055481000086],\n\t\t\t\t[92.36793257700003, 21.435436910000035],\n\t\t\t\t[92.35470341000007, 21.451818340000088],\n\t\t\t\t[92.32266402200014, 21.46189524300003],\n\t\t\t\t[92.2845268150001, 21.419055481000086],\n\t\t\t\t[92.25290083800007, 21.419520569000028],\n\t\t\t\t[92.23626102800006, 21.41709177700004],\n\t\t\t\t[92.22509891700014, 21.3974547320001],\n\t\t\t\t[92.21155969200004, 21.35487335200004],\n\t\t\t\t[92.1836544190001, 21.317201233],\n\t\t\t\t[92.17828007100013, 21.299734599000075],\n\t\t\t\t[92.17807336400006, 21.28014923100004],\n\t\t\t\t[92.18520471200003, 21.240410055000055],\n\t\t\t\t[92.18396447700007, 21.220876364000034],\n\t\t\t\t[92.17838342300007, 21.191265767000075],\n\t\t\t\t[92.17497277900003, 21.175607809000027],\n\t\t\t\t[92.18076053900012, 21.157882793000013],\n\t\t\t\t[92.18830529800005, 21.144085185000066],\n\t\t\t\t[92.21176639800012, 21.12351796500009],\n\t\t\t\t[92.21838098200004, 21.108635152000133],\n\t\t\t\t[92.22427209500012, 21.09318389900004],\n\t\t\t\t[92.26514733200008, 21.061102606000077],\n\t\t\t\t[92.25855553500003, 21.02252838700008],\n\t\t\t\t[92.25709069100003, 20.98110586100006],\n\t\t\t\t[92.26148522200003, 20.940252997000073],\n\t\t\t\t[92.27198326900003, 20.903509833000044],\n\t\t\t\t[92.30062910200007, 20.86237213700008],\n\t\t\t\t[92.30543053500003, 20.851955471000053],\n\t\t\t\t[92.30762780000003, 20.833197333000044],\n\t\t\t\t[92.32593834700003, 20.780585028000075],\n\t\t\t\t[92.33326256600003, 20.767726955000057],\n\t\t\t\t[92.33627363400007, 20.757147528000075],\n\t\t\t\t[92.33399498800003, 20.74640534100007],\n\t\t\t\t[92.32553144600007, 20.738714911000045],\n\t\t\t\t[92.31934655000003, 20.742010809000078],\n\t\t\t\t[92.31421959700003, 20.749253648000035],\n\t\t\t\t[92.30909264400003, 20.753241278000075],\n\t\t\t\t[92.30103600400008, 20.762274481000077],\n\t\t\t\t[92.27808678500003, 20.814113674000055],\n\t\t\t\t[92.20972741000003, 20.930812893000052],\n\t\t\t\t[92.19288170700008, 20.99567291900007],\n\t\t\t\t[92.18628991000003, 21.00584544500009],\n\t\t\t\t[92.13412519600007, 21.04751211100006],\n\t\t\t\t[92.12435957100007, 21.06045156500005],\n\t\t\t\t[92.10808353000004, 21.089911200000074],\n\t\t\t\t[92.09685306100005, 21.105861721000053],\n\t\t\t\t[92.05250084700003, 21.154771226000037],\n\t\t\t\t[92.04542076900003, 21.17096588700008],\n\t\t\t\t[92.04395592500003, 21.19204336100006],\n\t\t\t\t[92.05225670700008, 21.256659247000073],\n\t\t\t\t[92.05046634200005, 21.280462958000044],\n\t\t\t\t[92.04525800900007, 21.29954661700009],\n\t\t\t\t[91.98975670700008, 21.394232489000046],\n\t\t\t\t[91.98047936300003, 21.40375397300005],\n\t\t\t\t[91.96941165500004, 21.40961334800005],\n\t\t\t\t[91.95972741000003, 21.423976955000057],\n\t\t\t\t[91.95297285200007, 21.441839911000045],\n\t\t\t\t[91.94971764400003, 21.45840078300006],\n\t\t\t\t[91.95590254000007, 21.45840078300006],\n\t\t\t\t[91.95801842500003, 21.455023505000042],\n\t\t\t\t[91.95883222700007, 21.454413153000075],\n\t\t\t\t[91.96013431100005, 21.454250393000052],\n\t\t\t\t[91.96338951900003, 21.45213450700004],\n\t\t\t\t[91.97087649800005, 21.470038153000075],\n\t\t\t\t[91.98292076900003, 21.488836981000077],\n\t\t\t\t[91.99903405000003, 21.49949778900009],\n\t\t\t\t[92.01791425900007, 21.493109442000048],\n\t\t\t\t[92.00538170700008, 21.504299221000053],\n\t\t\t\t[91.99537194100003, 21.522609768000052],\n\t\t\t\t[91.98975670700008, 21.543402411000045],\n\t\t\t\t[91.99000084700003, 21.56199778900009],\n\t\t\t\t[91.99854576900003, 21.573187567000048],\n\t\t\t\t[92.01246178500003, 21.58539459800005],\n\t\t\t\t[92.02214603000004, 21.599351304000038],\n\t\t\t\t[92.01791425900007, 21.616034247000073],\n\t\t\t\t[92.03296959700003, 21.63300202000005],\n\t\t\t\t[92.03581790500004, 21.640448309000078],\n\t\t\t\t[92.03174889400003, 21.650132554000038],\n\t\t\t\t[92.03777103000004, 21.65957265800006],\n\t\t\t\t[92.03589928500003, 21.66815827000005],\n\t\t\t\t[92.02857506600003, 21.67479075700004],\n\t\t\t\t[92.02279707100007, 21.67682526200008],\n\t\t\t\t[92.02556399800005, 21.687241929000038],\n\t\t\t\t[92.02930748800003, 21.696234442000048],\n\t\t\t\t[92.02930748800003, 21.704901434000078],\n\t\t\t\t[92.02540123800003, 21.712836005000042],\n\t\t\t\t[92.02393639400003, 21.70465729400007],\n\t\t\t\t[92.02214603000004, 21.701564846000053],\n\t\t\t\t[92.01791425900007, 21.698553778000075],\n\t\t\t\t[92.02540123800003, 21.698553778000075],\n\t\t\t\t[92.01238040500004, 21.664211330000057],\n\t\t\t\t[92.00074303500003, 21.64980703300006],\n\t\t\t\t[91.98389733200008, 21.650132554000038],\n\t\t\t\t[91.97608483200008, 21.662054755000042],\n\t\t\t\t[91.97885175900007, 21.67772044500009],\n\t\t\t\t[91.98422285200007, 21.693508205000057],\n\t\t\t\t[91.98389733200008, 21.70538971600007],\n\t\t\t\t[91.97706139400003, 21.70538971600007],\n\t\t\t\t[91.97193444100003, 21.68821849200009],\n\t\t\t\t[91.96265709700003, 21.689520575000074],\n\t\t\t\t[91.95362389400003, 21.70140208500004],\n\t\t\t\t[91.94971764400003, 21.715969143000052],\n\t\t\t\t[91.95297285200007, 21.738348700000074],\n\t\t\t\t[91.96192467500003, 21.743841864000046],\n\t\t\t\t[91.97478274800005, 21.746486721000053],\n\t\t\t\t[91.99000084700003, 21.75999583500004],\n\t\t\t\t[91.98389733200008, 21.766831773000035],\n\t\t\t\t[91.96729576900003, 21.75543854400007],\n\t\t\t\t[91.96029707100007, 21.763820705000057],\n\t\t\t\t[91.96656334700003, 21.77887604400007],\n\t\t\t\t[91.99000084700003, 21.787909247000073],\n\t\t\t\t[91.99000084700003, 21.79482656500005],\n\t\t\t\t[91.94369550900007, 21.791408596000053],\n\t\t\t\t[91.92408287900008, 21.785223700000074],\n\t\t\t\t[91.90870201900003, 21.78115469000005],\n\t\t\t\t[91.89926191500007, 21.789496161000045],\n\t\t\t\t[91.90088951900003, 21.813299872000073],\n\t\t\t\t[91.91138756600003, 21.83470286700009],\n\t\t\t\t[91.92937259200005, 21.84316640800006],\n\t\t\t\t[91.92164147200003, 21.85342031500005],\n\t\t\t\t[91.92554772200003, 21.86286041900007],\n\t\t\t\t[91.93628991000003, 21.870835679000038],\n\t\t\t\t[91.94971764400003, 21.876695054000038],\n\t\t\t\t[91.94971764400003, 21.88418203300006],\n\t\t\t\t[91.93921959700003, 21.88304271000004],\n\t\t\t\t[91.92994225400008, 21.878648179000038],\n\t\t\t\t[91.92212975400008, 21.871568101000037],\n\t\t\t\t[91.91570071700005, 21.862453518000052],\n\t\t\t\t[91.91032962300005, 21.87490469000005],\n\t\t\t\t[91.90560957100007, 21.89557526200008],\n\t\t\t\t[91.90121504000007, 21.935370184000078],\n\t\t\t\t[91.89820397200003, 21.94489166900007],\n\t\t\t\t[91.88404381600003, 21.960150458000044],\n\t\t\t\t[91.88086998800003, 21.969183661000045],\n\t\t\t\t[91.88086998800003, 22.007025458000044],\n\t\t\t\t[91.85523522200003, 22.109198309000078],\n\t\t\t\t[91.85352623800003, 22.14362213700008],\n\t\t\t\t[91.86394290500004, 22.139593817000048],\n\t\t\t\t[91.86719811300003, 22.13739655200004],\n\t\t\t\t[91.86207116000003, 22.15062083500004],\n\t\t\t\t[91.85328209700003, 22.14874909100007],\n\t\t\t\t[91.84603925900007, 22.135972398000035],\n\t\t\t\t[91.84603925900007, 22.116888739000046],\n\t\t\t\t[91.83985436300003, 22.116888739000046],\n\t\t\t\t[91.82911217500003, 22.134100653000075],\n\t\t\t\t[91.81934655000003, 22.155951239000046],\n\t\t\t\t[91.81299889400003, 22.18032461100006],\n\t\t\t\t[91.81202233200008, 22.205023505000042],\n\t\t\t\t[91.81690514400003, 22.22028229400007],\n\t\t\t\t[91.82585696700005, 22.23004791900007],\n\t\t\t\t[91.83472741000003, 22.237616278000075],\n\t\t\t\t[91.83985436300003, 22.246649481000077],\n\t\t\t\t[91.83838951900003, 22.26308828300006],\n\t\t\t\t[91.82984459700003, 22.271307684000078],\n\t\t\t\t[91.81918379000007, 22.275824286000045],\n\t\t\t\t[91.81202233200008, 22.281398830000057],\n\t\t\t\t[91.80884850400008, 22.306341864000046],\n\t\t\t\t[91.82650800900007, 22.31826406500005],\n\t\t\t\t[91.85238691500007, 22.325344143000052],\n\t\t\t\t[91.87403405000003, 22.336004950000074],\n\t\t\t\t[91.88493899800005, 22.35382721600007],\n\t\t\t\t[91.90805097700007, 22.424750067000048],\n\t\t\t\t[91.90186608200008, 22.42405833500004],\n\t\t\t\t[91.88770592500003, 22.424750067000048],\n\t\t\t\t[91.88550866000003, 22.40965403900009],\n\t\t\t\t[91.87574303500003, 22.37107982000009],\n\t\t\t\t[91.87745201900003, 22.363348700000074],\n\t\t\t\t[91.87045332100007, 22.35809967700004],\n\t\t\t\t[91.85914147200003, 22.346625067000048],\n\t\t\t\t[91.84400475400008, 22.33494700700004],\n\t\t\t\t[91.82634524800005, 22.32916901200008],\n\t\t\t\t[91.82325280000003, 22.324164130000042],\n\t\t\t\t[91.79859459700003, 22.31191640800006],\n\t\t\t\t[91.79135175900007, 22.301906643000052],\n\t\t\t\t[91.79395592500003, 22.286037502000056],\n\t\t\t\t[91.80453535200007, 22.278469143000052],\n\t\t\t\t[91.81723066500007, 22.27407461100006],\n\t\t\t\t[91.82634524800005, 22.26776764500005],\n\t\t\t\t[91.82593834700003, 22.248480536000045],\n\t\t\t\t[91.80892988400007, 22.236273505000042],\n\t\t\t\t[91.78711998800003, 22.237941799000055],\n\t\t\t\t[91.77165774800005, 22.260321356000077],\n\t\t\t\t[91.75440514400003, 22.374660549000055],\n\t\t\t\t[91.74366295700008, 22.411078192000048],\n\t\t\t\t[91.67603600400008, 22.53461334800005],\n\t\t\t\t[91.54810631600003, 22.700344143000052],\n\t\t\t\t[91.51636803500003, 22.712225653000075],\n\t\t\t\t[91.49870853000004, 22.72728099200009],\n\t\t\t\t[91.48462975400008, 22.74551015800006],\n\t\t\t\t[91.47681725400008, 22.76117584800005],\n\t\t\t\t[91.46900475400008, 22.757066148000035],\n\t\t\t\t[91.46241295700008, 22.76190827000005],\n\t\t\t\t[91.45801842500003, 22.772284247000073],\n\t\t\t\t[91.45630944100003, 22.784816799000055],\n\t\t\t\t[91.45834394600007, 22.79706452000005],\n\t\t\t\t[91.46778405000003, 22.80931224200009],\n\t\t\t\t[91.47396894600007, 22.838324286000045],\n\t\t\t\t[91.49000084700003, 22.880560614000046],\n\t\t\t\t[91.49048912900008, 22.90452708500004],\n\t\t\t\t[91.48308353000004, 22.90452708500004],\n\t\t\t\t[91.47966556100005, 22.885891018000052],\n\t\t\t\t[91.46241295700008, 22.83344147300005],\n\t\t\t\t[91.45248457100007, 22.822658596000053],\n\t\t\t\t[91.43043053500003, 22.81631094000005],\n\t\t\t\t[91.41675866000003, 22.799994208000044],\n\t\t\t\t[91.41163170700008, 22.777818101000037],\n\t\t\t\t[91.41472415500004, 22.753729559000078],\n\t\t\t\t[91.39966881600003, 22.76430898600006],\n\t\t\t\t[91.38502037900008, 22.770697333000044],\n\t\t\t\t[91.36833743600005, 22.773993231000077],\n\t\t\t\t[91.34644616000003, 22.77484772300005],\n\t\t\t\t[91.34644616000003, 22.767401434000078],\n\t\t\t\t[91.36744225400008, 22.761664130000042],\n\t\t\t\t[91.37012780000003, 22.75218333500004],\n\t\t\t\t[91.36011803500003, 22.743394273000035],\n\t\t\t\t[91.34262129000007, 22.739447333000044],\n\t\t\t\t[91.29078209700003, 22.738430080000057],\n\t\t\t\t[91.30884850400008, 22.73309967700004],\n\t\t\t\t[91.32504316500007, 22.72614166900007],\n\t\t\t\t[91.33277428500003, 22.72020091400009],\n\t\t\t\t[91.32992597700007, 22.70571523600006],\n\t\t\t\t[91.31739342500003, 22.697211005000042],\n\t\t\t\t[91.30054772200003, 22.69326406500005],\n\t\t\t\t[91.28443444100003, 22.692287502000056],\n\t\t\t\t[91.28345787900008, 22.69334544500009],\n\t\t\t\t[91.25277754000007, 22.699286200000074],\n\t\t\t\t[91.24838300900007, 22.69822825700004],\n\t\t\t\t[91.24480228000004, 22.698391018000052],\n\t\t\t\t[91.24341881600003, 22.70221588700008],\n\t\t\t\t[91.24390709700003, 22.71743398600006],\n\t\t\t\t[91.24341881600003, 22.72020091400009],\n\t\t\t\t[91.23121178500003, 22.724310614000046],\n\t\t\t\t[91.21607506600003, 22.72606028900009],\n\t\t\t\t[91.18189537900008, 22.72646719000005],\n\t\t\t\t[91.18189537900008, 22.72020091400009],\n\t\t\t\t[91.19459069100003, 22.70966217700004],\n\t\t\t\t[91.19922936300003, 22.69879791900007],\n\t\t\t\t[91.19214928500003, 22.69163646000004],\n\t\t\t\t[91.16895592500003, 22.692287502000056],\n\t\t\t\t[91.16895592500003, 22.684881903000075],\n\t\t\t\t[91.22689863400007, 22.671087958000044],\n\t\t\t\t[91.25342858200008, 22.660711981000077],\n\t\t\t\t[91.26449629000007, 22.64081452000005],\n\t\t\t\t[91.26107832100007, 22.627875067000048],\n\t\t\t\t[91.25310306100005, 22.613836981000077],\n\t\t\t\t[91.24156880000004, 22.575395765000053],\n\t\t\t\t[91.22136457600004, 22.55719260500007],\n\t\t\t\t[91.20274304600008, 22.543219639000085],\n\t\t\t\t[91.17656568400008, 22.53641941400008],\n\t\t\t\t[91.12734345800004, 22.527025948000073],\n\t\t\t\t[91.08920058200005, 22.544430256000055],\n\t\t\t\t[91.06957967100004, 22.571556869000062],\n\t\t\t\t[91.05860436300003, 22.61432526200008],\n\t\t\t\t[91.04867597700007, 22.626166083000044],\n\t\t\t\t[91.03793379000007, 22.643866278000075],\n\t\t\t\t[91.02670332100007, 22.674261786000045],\n\t\t\t\t[91.01832116000003, 22.68309153900009],\n\t\t\t\t[91.00375410200007, 22.678656317000048],\n\t\t\t\t[91.01872806100005, 22.664455471000053],\n\t\t\t\t[91.03223717500003, 22.636867580000057],\n\t\t\t\t[91.04021243600005, 22.60773346600007],\n\t\t\t\t[91.03793379000007, 22.58860911700009],\n\t\t\t\t[91.01758873800003, 22.579291083000044],\n\t\t\t\t[90.98511803500003, 22.574367580000057],\n\t\t\t\t[90.95492597700007, 22.575832424000055],\n\t\t\t\t[90.94174238400007, 22.585882880000042],\n\t\t\t\t[90.93555748800003, 22.599676825000074],\n\t\t\t\t[90.90821373800003, 22.61786530200004],\n\t\t\t\t[90.90202884200005, 22.627101955000057],\n\t\t\t\t[90.89877363400007, 22.63617584800005],\n\t\t\t\t[90.88412519600007, 22.65448639500005],\n\t\t\t\t[90.87647545700008, 22.682806708000044],\n\t\t\t\t[90.86548912900008, 22.687160549000055],\n\t\t\t\t[90.83594811300003, 22.684881903000075],\n\t\t\t\t[90.83130944100003, 22.690578518000052],\n\t\t\t\t[90.81950931100005, 22.72646719000005],\n\t\t\t\t[90.81177819100003, 22.732367255000042],\n\t\t\t\t[90.80258222700007, 22.736395575000074],\n\t\t\t\t[90.79493248800003, 22.741359768000052],\n\t\t\t\t[90.78834069100003, 22.75922272300005],\n\t\t\t\t[90.77418053500003, 22.77806224200009],\n\t\t\t\t[90.77100670700008, 22.784816799000055],\n\t\t\t\t[90.76954186300003, 22.795355536000045],\n\t\t\t\t[90.75733483200008, 22.822658596000053],\n\t\t\t\t[90.75001061300003, 22.856756903000075],\n\t\t\t\t[90.74195397200003, 22.874212958000044],\n\t\t\t\t[90.73292076900003, 22.889064846000053],\n\t\t\t\t[90.72559655000003, 22.90570709800005],\n\t\t\t\t[90.72266686300003, 22.92845286700009],\n\t\t\t\t[90.71745853000004, 22.940619208000044],\n\t\t\t\t[90.64014733200008, 23.038031317000048],\n\t\t\t\t[90.62940514400003, 23.064398505000042],\n\t\t\t\t[90.62712649800005, 23.075873114000046],\n\t\t\t\t[90.62720787900008, 23.08665599200009],\n\t\t\t\t[90.63868248800003, 23.14789459800005],\n\t\t\t\t[90.64014733200008, 23.18886953300006],\n\t\t\t\t[90.64584394600007, 23.21092357000009],\n\t\t\t\t[90.65707441500007, 23.23037344000005],\n\t\t\t\t[90.66521243600005, 23.24876536700009],\n\t\t\t\t[90.66114342500003, 23.267645575000074],\n\t\t\t\t[90.66732832100007, 23.267645575000074],\n\t\t\t\t[90.65088951900003, 23.30023834800005],\n\t\t\t\t[90.65015709700003, 23.31354401200008],\n\t\t\t\t[90.66114342500003, 23.32225169500009],\n\t\t\t\t[90.65772545700008, 23.32322825700004],\n\t\t\t\t[90.65479576900003, 23.32330963700008],\n\t\t\t\t[90.65316816500007, 23.324652411000045],\n\t\t\t\t[90.65365644600007, 23.329738674000055],\n\t\t\t\t[90.62842858200008, 23.321519273000035],\n\t\t\t\t[90.61133873800003, 23.34247467700004],\n\t\t\t\t[90.60173587300005, 23.37246328300006],\n\t\t\t\t[90.59913170700008, 23.391180731000077],\n\t\t\t\t[90.60027103000004, 23.44993724200009],\n\t\t\t\t[90.60873457100007, 23.472723700000074],\n\t\t\t\t[90.63331139400003, 23.486761786000045],\n\t\t\t\t[90.69157962300005, 23.486476955000057],\n\t\t\t\t[90.71501712300005, 23.49835846600007],\n\t\t\t\t[90.71583092500003, 23.53514232000009],\n\t\t\t\t[90.71119225400008, 23.54881419500009],\n\t\t\t\t[90.70557701900003, 23.554510809000078],\n\t\t\t\t[90.69581139400003, 23.555487372000073],\n\t\t\t\t[90.67823326900003, 23.555080471000053],\n\t\t\t\t[90.67546634200005, 23.550930080000057],\n\t\t\t\t[90.68433678500003, 23.54173411700009],\n\t\t\t\t[90.70215905000003, 23.52838776200008],\n\t\t\t\t[90.69532311300003, 23.507879950000074],\n\t\t\t\t[90.67774498800003, 23.517279364000046],\n\t\t\t\t[90.66675866000003, 23.51821523600006],\n\t\t\t\t[90.64747155000003, 23.507879950000074],\n\t\t\t\t[90.62208092500003, 23.500067450000074],\n\t\t\t\t[90.60775800900007, 23.491115627000056],\n\t\t\t\t[90.60336347700007, 23.494696356000077],\n\t\t\t\t[90.58814537900008, 23.53416575700004],\n\t\t\t\t[90.59205162900008, 23.56248607000009],\n\t\t\t\t[90.60816491000003, 23.585760809000078],\n\t\t\t\t[90.63331139400003, 23.596625067000048],\n\t\t\t\t[90.62712649800005, 23.603461005000042],\n\t\t\t\t[90.62533613400007, 23.599351304000038],\n\t\t\t\t[90.62525475400008, 23.59833405200004],\n\t\t\t\t[90.62403405000003, 23.598089911000045],\n\t\t\t\t[90.61963951900003, 23.596625067000048],\n\t\t\t\t[90.61198978000004, 23.60610586100006],\n\t\t\t\t[90.59546959700003, 23.604396877000056],\n\t\t\t\t[90.55876712300005, 23.590399481000077],\n\t\t\t\t[90.56446373800003, 23.57640208500004],\n\t\t\t\t[90.55941816500007, 23.56793854400007],\n\t\t\t\t[90.54721113400007, 23.563788153000075],\n\t\t\t\t[90.53150475400008, 23.56248607000009],\n\t\t\t\t[90.51465905000003, 23.563788153000075],\n\t\t\t\t[90.50171959700003, 23.56793854400007],\n\t\t\t\t[90.47632897200003, 23.582953192000048],\n\t\t\t\t[90.48438561300003, 23.56745026200008],\n\t\t\t\t[90.49838300900007, 23.55727773600006],\n\t\t\t\t[90.51498457100007, 23.55141836100006],\n\t\t\t\t[90.53150475400008, 23.54881419500009],\n\t\t\t\t[90.56869550900007, 23.54751211100006],\n\t\t\t\t[90.57683353000004, 23.539496161000045],\n\t\t\t\t[90.57894941500007, 23.44985586100006],\n\t\t\t\t[90.57593834700003, 23.43895091400009],\n\t\t\t\t[90.56812584700003, 23.432928778000075],\n\t\t\t\t[90.55990644600007, 23.418402411000045],\n\t\t\t\t[90.55372155000003, 23.40070221600007],\n\t\t\t\t[90.55193118600005, 23.38495514500005],\n\t\t\t\t[90.51832116000003, 23.398260809000078],\n\t\t\t\t[90.32243899800005, 23.433294989000046],\n\t\t\t\t[90.28443444100003, 23.446193752000056],\n\t\t\t\t[90.25033613400007, 23.466945705000057],\n\t\t\t\t[90.24935957100007, 23.45538971600007],\n\t\t\t\t[90.25879967500003, 23.444566148000035],\n\t\t\t\t[90.38851972700007, 23.372381903000075],\n\t\t\t\t[90.40414472700007, 23.36041901200008],\n\t\t\t\t[90.41342207100007, 23.34796784100007],\n\t\t\t\t[90.41968834700003, 23.335598049000055],\n\t\t\t\t[90.42847741000003, 23.326117255000042],\n\t\t\t\t[90.46021569100003, 23.31972890800006],\n\t\t\t\t[90.48796634200005, 23.30683014500005],\n\t\t\t\t[90.50359134200005, 23.30174388200004],\n\t\t\t\t[90.56910241000003, 23.294989325000074],\n\t\t\t\t[90.57732181100005, 23.288397528000075],\n\t\t\t\t[90.60661868600005, 23.247219143000052],\n\t\t\t\t[90.61085045700008, 23.23078034100007],\n\t\t\t\t[90.61451256600003, 23.195461330000057],\n\t\t\t\t[90.61036217500003, 23.20115794500009],\n\t\t\t\t[90.60271243600005, 23.211004950000074],\n\t\t\t\t[90.59351647200003, 23.219875393000052],\n\t\t\t\t[90.59839928500003, 23.200425523000035],\n\t\t\t\t[90.60287519600007, 23.14130280200004],\n\t\t\t\t[90.59913170700008, 23.11749909100007],\n\t\t\t\t[90.57195071700005, 23.081732489000046],\n\t\t\t\t[90.56560306100005, 23.075873114000046],\n\t\t\t\t[90.55372155000003, 23.078558661000045],\n\t\t\t\t[90.55128014400003, 23.08690013200004],\n\t\t\t\t[90.55591881600003, 23.096828518000052],\n\t\t\t\t[90.56560306100005, 23.10382721600007],\n\t\t\t\t[90.56560306100005, 23.110663153000075],\n\t\t\t\t[90.55876712300005, 23.110663153000075],\n\t\t\t\t[90.54761803500003, 23.09674713700008],\n\t\t\t\t[90.53663170700008, 23.086818752000056],\n\t\t\t\t[90.52279707100007, 23.080145575000074],\n\t\t\t\t[90.50359134200005, 23.075873114000046],\n\t\t\t\t[90.46607506600003, 23.07684967700004],\n\t\t\t\t[90.45362389400003, 23.072333075000074],\n\t\t\t\t[90.44890384200005, 23.05573151200008],\n\t\t\t\t[90.45012454500005, 23.049343166000085],\n\t\t\t\t[90.45435631600003, 23.02753327000005],\n\t\t\t\t[90.46827233200008, 22.99607982000009],\n\t\t\t\t[90.48698978000004, 22.966131903000075],\n\t\t\t\t[90.50700931100005, 22.94208405200004],\n\t\t\t\t[90.50928795700008, 22.93699778900009],\n\t\t\t\t[90.50757897200003, 22.92536041900007],\n\t\t\t\t[90.51042728000004, 22.91819896000004],\n\t\t\t\t[90.51295006600003, 22.91705963700008],\n\t\t\t\t[90.51685631600003, 22.916815497000073],\n\t\t\t\t[90.52100670700008, 22.915676174000055],\n\t\t\t\t[90.52409915500004, 22.91201406500005],\n\t\t\t\t[90.53598066500007, 22.90338776200008],\n\t\t\t\t[90.54004967500003, 22.896551825000074],\n\t\t\t\t[90.53492272200003, 22.887152411000045],\n\t\t\t\t[90.52003014400003, 22.880194403000075],\n\t\t\t\t[90.50513756600003, 22.881659247000073],\n\t\t\t\t[90.49048912900008, 22.885199286000045],\n\t\t\t\t[90.47632897200003, 22.884100653000075],\n\t\t\t\t[90.45720462300005, 22.861761786000045],\n\t\t\t\t[90.44809004000007, 22.82843659100007],\n\t\t\t\t[90.43604576900003, 22.800604559000078],\n\t\t\t\t[90.40796959700003, 22.794663804000038],\n\t\t\t\t[90.42400149800005, 22.781683661000045],\n\t\t\t\t[90.41993248800003, 22.76825592700004],\n\t\t\t\t[90.40642337300005, 22.76308828300006],\n\t\t\t\t[90.39429772200003, 22.77484772300005],\n\t\t\t\t[90.37256920700008, 22.761419989000046],\n\t\t\t\t[90.38721764400003, 22.751288153000075],\n\t\t\t\t[90.41578209700003, 22.74249909100007],\n\t\t\t\t[90.43523196700005, 22.733303127000056],\n\t\t\t\t[90.44459069100003, 22.751654364000046],\n\t\t\t\t[90.46168053500003, 22.748846747000073],\n\t\t\t\t[90.47901451900003, 22.73501211100006],\n\t\t\t\t[90.48991946700005, 22.72020091400009],\n\t\t\t\t[90.49293053500003, 22.709906317000048],\n\t\t\t\t[90.49675540500004, 22.678656317000048],\n\t\t\t\t[90.50896243600005, 22.646429755000042],\n\t\t\t\t[90.51270592500003, 22.611476955000057],\n\t\t\t\t[90.51002037900008, 22.60423411700009],\n\t\t\t\t[90.50017337300005, 22.592352606000077],\n\t\t\t\t[90.49138431100005, 22.587836005000042],\n\t\t\t\t[90.46859785200007, 22.58470286700009],\n\t\t\t\t[90.45923912900008, 22.579291083000044],\n\t\t\t\t[90.45346113400007, 22.564195054000038],\n\t\t\t\t[90.44214928500003, 22.508734442000048],\n\t\t\t\t[90.44206790500004, 22.49363841400009],\n\t\t\t\t[90.44499759200005, 22.50413646000004],\n\t\t\t\t[90.45118248800003, 22.510158596000053],\n\t\t\t\t[90.45801842500003, 22.51463450700004],\n\t\t\t\t[90.46265709700003, 22.52098216400009],\n\t\t\t\t[90.46355228000004, 22.53143952000005],\n\t\t\t\t[90.46045983200008, 22.551174221000053],\n\t\t\t\t[90.46265709700003, 22.56195709800005],\n\t\t\t\t[90.47250410200007, 22.57558828300006],\n\t\t\t\t[90.48731530000003, 22.583726304000038],\n\t\t\t\t[90.50513756600003, 22.58624909100007],\n\t\t\t\t[90.52409915500004, 22.58307526200008],\n\t\t\t\t[90.55974368600005, 22.562323309000078],\n\t\t\t\t[90.57781009200005, 22.533677476000037],\n\t\t\t\t[90.58969160200007, 22.500433661000045],\n\t\t\t\t[90.60661868600005, 22.465765692000048],\n\t\t\t\t[90.59131920700008, 22.470526434000078],\n\t\t\t\t[90.58619225400008, 22.473211981000077],\n\t\t\t\t[90.58643639400003, 22.45058828300006],\n\t\t\t\t[90.59359785200007, 22.43231842700004],\n\t\t\t\t[90.61345462300005, 22.396877346000053],\n\t\t\t\t[90.61841881600003, 22.376654364000046],\n\t\t\t\t[90.61931399800005, 22.355902411000045],\n\t\t\t\t[90.61345462300005, 22.314886786000045],\n\t\t\t\t[90.58155358200008, 22.238226630000042],\n\t\t\t\t[90.55795332100007, 22.20335521000004],\n\t\t\t\t[90.53834069100003, 22.198879299000055],\n\t\t\t\t[90.51172936300003, 22.185288804000038],\n\t\t\t\t[90.50114993600005, 22.176703192000048],\n\t\t\t\t[90.49675540500004, 22.167792059000078],\n\t\t\t\t[90.49439537900008, 22.154242255000042],\n\t\t\t\t[90.48829186300003, 22.138617255000042],\n\t\t\t\t[90.45964603000004, 22.091945705000057],\n\t\t\t\t[90.45004316500007, 22.08079661700009],\n\t\t\t\t[90.43864993600005, 22.075995184000078],\n\t\t\t\t[90.42546634200005, 22.07884349200009],\n\t\t\t\t[90.40845787900008, 22.08592357000009],\n\t\t\t\t[90.39380944100003, 22.09471263200004],\n\t\t\t\t[90.38746178500003, 22.10260651200008],\n\t\t\t\t[90.39323978000004, 22.127386786000045],\n\t\t\t\t[90.41749108200008, 22.175034898000035],\n\t\t\t\t[90.42164147200003, 22.198879299000055],\n\t\t\t\t[90.41000410200007, 22.22728099200009],\n\t\t\t\t[90.40796959700003, 22.24042389500005],\n\t\t\t\t[90.41407311300003, 22.27179596600007],\n\t\t\t\t[90.41089928500003, 22.28424713700008],\n\t\t\t\t[90.39429772200003, 22.288234768000052],\n\t\t\t\t[90.39869225400008, 22.26748281500005],\n\t\t\t\t[90.38868248800003, 22.223211981000077],\n\t\t\t\t[90.39087975400008, 22.208807684000078],\n\t\t\t\t[90.39909915500004, 22.20221588700008],\n\t\t\t\t[90.40552819100003, 22.19953034100007],\n\t\t\t\t[90.41049238400007, 22.195705471000053],\n\t\t\t\t[90.41423587300005, 22.18577708500004],\n\t\t\t\t[90.41285241000003, 22.17804596600007],\n\t\t\t\t[90.40821373800003, 22.171210028000075],\n\t\t\t\t[90.40056399800005, 22.16404857000009],\n\t\t\t\t[90.39918053500003, 22.16233958500004],\n\t\t\t\t[90.39714603000004, 22.160630601000037],\n\t\t\t\t[90.39519290500004, 22.15721263200004],\n\t\t\t\t[90.39258873800003, 22.143011786000045],\n\t\t\t\t[90.38868248800003, 22.143459377000056],\n\t\t\t\t[90.38379967500003, 22.145738023000035],\n\t\t\t\t[90.38005618600005, 22.14362213700008],\n\t\t\t\t[90.37712649800005, 22.133612372000073],\n\t\t\t\t[90.37378991000003, 22.10260651200008],\n\t\t\t\t[90.36988366000003, 22.08982982000009],\n\t\t\t\t[90.36573326900003, 22.081203518000052],\n\t\t\t\t[90.34742272200003, 22.05532461100006],\n\t\t\t\t[90.33472741000003, 22.041815497000073],\n\t\t\t\t[90.33220462300005, 22.03807200700004],\n\t\t\t\t[90.32789147200003, 22.02049388200004],\n\t\t\t\t[90.30860436300003, 21.984035549000055],\n\t\t\t\t[90.30437259200005, 21.965765692000048],\n\t\t\t\t[90.29997806100005, 21.927679755000042],\n\t\t\t\t[90.29070071700005, 21.890326239000046],\n\t\t\t\t[90.28288821700005, 21.870794989000046],\n\t\t\t\t[90.27271569100003, 21.85740794500009],\n\t\t\t\t[90.21762129000007, 21.81346263200004],\n\t\t\t\t[90.20378665500004, 21.80459219000005],\n\t\t\t\t[90.18482506600003, 21.80097077000005],\n\t\t\t\t[90.16439863400007, 21.80426666900007],\n\t\t\t\t[90.12680097700007, 21.818793036000045],\n\t\t\t\t[90.10906009200005, 21.822088934000078],\n\t\t\t\t[90.09294681100005, 21.83026764500005],\n\t\t\t\t[90.08855228000004, 21.84674713700008],\n\t\t\t\t[90.09538821700005, 21.859442450000074],\n\t\t\t\t[90.11247806100005, 21.856268622000073],\n\t\t\t\t[90.10499108200008, 21.870266018000052],\n\t\t\t\t[90.11085045700008, 21.880113023000035],\n\t\t\t\t[90.12086022200003, 21.88930898600006],\n\t\t\t\t[90.12623131600003, 21.901190497000073],\n\t\t\t\t[90.12452233200008, 21.90973541900007],\n\t\t\t\t[90.12183678500003, 21.915350653000075],\n\t\t\t\t[90.12134850400008, 21.921576239000046],\n\t\t\t\t[90.12623131600003, 21.93195221600007],\n\t\t\t\t[90.11622155000003, 21.91933828300006],\n\t\t\t\t[90.09848066500007, 21.878607489000046],\n\t\t\t\t[90.08887780000003, 21.86985911700009],\n\t\t\t\t[90.07935631600003, 21.866929429000038],\n\t\t\t\t[90.06690514400003, 21.85342031500005],\n\t\t\t\t[90.05787194100003, 21.849351304000038],\n\t\t\t\t[90.04932701900003, 21.85101959800005],\n\t\t\t\t[90.03630618600005, 21.861151434000078],\n\t\t\t\t[90.02442467500003, 21.862453518000052],\n\t\t\t\t[90.03126061300003, 21.889227606000077],\n\t\t\t\t[90.03394616000003, 21.94354889500005],\n\t\t\t\t[90.04493248800003, 21.966131903000075],\n\t\t\t\t[90.05420983200008, 21.97337474200009],\n\t\t\t\t[90.06576582100007, 21.97988515800006],\n\t\t\t\t[90.07715905000003, 21.987982489000046],\n\t\t\t\t[90.08578535200007, 22.00023021000004],\n\t\t\t\t[90.09058678500003, 22.015448309000078],\n\t\t\t\t[90.09253991000003, 22.02798086100006],\n\t\t\t\t[90.09595787900008, 22.04010651200008],\n\t\t\t\t[90.10564212300005, 22.05426666900007],\n\t\t\t\t[90.14673912900008, 22.089016018000052],\n\t\t\t\t[90.15162194100003, 22.094875393000052],\n\t\t\t\t[90.15886478000004, 22.10691966400009],\n\t\t\t\t[90.16407311300003, 22.113226630000042],\n\t\t\t\t[90.17286217500003, 22.117010809000078],\n\t\t\t\t[90.18181399800005, 22.11481354400007],\n\t\t\t\t[90.18970787900008, 22.11082591400009],\n\t\t\t\t[90.19507897200003, 22.109523830000057],\n\t\t\t\t[90.21615644600007, 22.12323639500005],\n\t\t\t\t[90.23170006600003, 22.145656643000052],\n\t\t\t\t[90.23910566500007, 22.172267971000053],\n\t\t\t\t[90.23609459700003, 22.198879299000055],\n\t\t\t\t[90.21827233200008, 22.15570709800005],\n\t\t\t\t[90.20582116000003, 22.132961330000057],\n\t\t\t\t[90.19166100400008, 22.123114325000074],\n\t\t\t\t[90.16480553500003, 22.11981842700004],\n\t\t\t\t[90.14828535200007, 22.11078522300005],\n\t\t\t\t[90.08887780000003, 22.051174221000053],\n\t\t\t\t[90.08179772200003, 22.04100169500009],\n\t\t\t\t[90.07374108200008, 22.019232489000046],\n\t\t\t\t[90.06104576900003, 22.000799872000073],\n\t\t\t\t[90.05795332100007, 21.99371979400007],\n\t\t\t\t[90.05241946700005, 21.98899974200009],\n\t\t\t\t[90.03809655000003, 21.98655833500004],\n\t\t\t\t[90.02816816500007, 21.988104559000078],\n\t\t\t\t[89.99634850400008, 22.00023021000004],\n\t\t\t\t[90.00212649800005, 22.014105536000045],\n\t\t\t\t[90.00318444100003, 22.029364325000074],\n\t\t\t\t[90.01075280000003, 22.04120514500005],\n\t\t\t\t[90.02019290500004, 22.04881419500009],\n\t\t\t\t[90.02898196700005, 22.05296458500004],\n\t\t\t\t[90.03541100400008, 22.059800523000035],\n\t\t\t\t[90.03809655000003, 22.075344143000052],\n\t\t\t\t[90.03467858200008, 22.105169989000046],\n\t\t\t\t[90.03907311300003, 22.11627838700008],\n\t\t\t\t[90.04273522200003, 22.131252346000053],\n\t\t\t\t[90.05209394600007, 22.141099351000037],\n\t\t\t\t[90.06324303500003, 22.145738023000035],\n\t\t\t\t[90.07260175900007, 22.152044989000046],\n\t\t\t\t[90.07837975400008, 22.16404857000009],\n\t\t\t\t[90.05258222700007, 22.155462958000044],\n\t\t\t\t[90.04004967500003, 22.13808828300006],\n\t\t\t\t[90.02442467500003, 22.089016018000052],\n\t\t\t\t[90.01539147200003, 22.077866929000038],\n\t\t\t\t[89.98853600400008, 22.05304596600007],\n\t\t\t\t[89.98275800900007, 22.044623114000046],\n\t\t\t\t[89.98519941500007, 21.99941640800006],\n\t\t\t\t[89.98275800900007, 21.98655833500004],\n\t\t\t\t[89.96778405000003, 21.974554755000042],\n\t\t\t\t[89.94971764400003, 21.980902411000045],\n\t\t\t\t[89.93441816500007, 21.997707424000055],\n\t\t\t\t[89.92823326900003, 22.017279364000046],\n\t\t\t\t[89.92628014400003, 22.027167059000078],\n\t\t\t\t[89.91749108200008, 22.04987213700008],\n\t\t\t\t[89.91456139400003, 22.061672268000052],\n\t\t\t\t[89.91236412900008, 22.135565497000073],\n\t\t\t\t[89.90308678500003, 22.176906643000052],\n\t\t\t\t[89.90088951900003, 22.201971747000073],\n\t\t\t\t[89.89828535200007, 22.21165599200009],\n\t\t\t\t[89.88550866000003, 22.230617580000057],\n\t\t\t\t[89.88038170700008, 22.24042389500005],\n\t\t\t\t[89.87663821700005, 22.25348541900007],\n\t\t\t\t[89.87533613400007, 22.26398346600007],\n\t\t\t\t[89.87680097700007, 22.274725653000075],\n\t\t\t\t[89.88038170700008, 22.288234768000052],\n\t\t\t\t[89.90015709700003, 22.333929755000042],\n\t\t\t\t[89.98275800900007, 22.445257880000042],\n\t\t\t\t[89.98829186300003, 22.45774974200009],\n\t\t\t\t[89.99195397200003, 22.469875393000052],\n\t\t\t\t[89.99789472700007, 22.480861721000053],\n\t\t\t\t[90.01010175900007, 22.49022044500009],\n\t\t\t\t[89.98275800900007, 22.473211981000077],\n\t\t\t\t[89.97950280000003, 22.470078843000067],\n\t\t\t\t[89.94743899800005, 22.43968333500004],\n\t\t\t\t[89.93360436300003, 22.423529364000046],\n\t\t\t\t[89.92823326900003, 22.40770091400009],\n\t\t\t\t[89.92042076900003, 22.391831773000035],\n\t\t\t\t[89.90308678500003, 22.396429755000042],\n\t\t\t\t[89.87289472700007, 22.41860586100006],\n\t\t\t\t[89.87484785200007, 22.397650458000044],\n\t\t\t\t[89.88054446700005, 22.380601304000038],\n\t\t\t\t[89.88412519600007, 22.36351146000004],\n\t\t\t\t[89.88038170700008, 22.342230536000045],\n\t\t\t\t[89.83871504000007, 22.26776764500005],\n\t\t\t\t[89.85084069100003, 22.246527411000045],\n\t\t\t\t[89.86133873800003, 22.211004950000074],\n\t\t\t\t[89.87289472700007, 22.14362213700008],\n\t\t\t\t[89.87427819100003, 22.10883209800005],\n\t\t\t\t[89.87134850400008, 22.091864325000074],\n\t\t\t\t[89.86296634200005, 22.079046942000048],\n\t\t\t\t[89.84620201900003, 22.07062409100007],\n\t\t\t\t[89.83155358200008, 22.071966864000046],\n\t\t\t\t[89.81617272200003, 22.075995184000078],\n\t\t\t\t[89.79721113400007, 22.075995184000078],\n\t\t\t\t[89.79721113400007, 22.068508205000057],\n\t\t\t\t[89.81836998800003, 22.06004466400009],\n\t\t\t\t[89.83594811300003, 22.04946523600006],\n\t\t\t\t[89.84791100400008, 22.03388092700004],\n\t\t\t\t[89.85238691500007, 22.01044342700004],\n\t\t\t\t[89.85108483200008, 22.000881252000056],\n\t\t\t\t[89.84595787900008, 21.982896226000037],\n\t\t\t\t[89.84620201900003, 21.972316799000055],\n\t\t\t\t[89.85027103000004, 21.96312083500004],\n\t\t\t\t[89.86378014400003, 21.943304755000042],\n\t\t\t\t[89.87183678500003, 21.924261786000045],\n\t\t\t\t[89.88160241000003, 21.912990627000056],\n\t\t\t\t[89.88721764400003, 21.900091864000046],\n\t\t\t\t[89.88038170700008, 21.88418203300006],\n\t\t\t\t[89.87322024800005, 21.88157786700009],\n\t\t\t\t[89.85092207100007, 21.877508856000077],\n\t\t\t\t[89.82520592500003, 21.856268622000073],\n\t\t\t\t[89.81959069100003, 21.849554755000042],\n\t\t\t\t[89.81763756600003, 21.844916083000044],\n\t\t\t\t[89.81421959700003, 21.84080638200004],\n\t\t\t\t[89.80469811300003, 21.835760809000078],\n\t\t\t\t[89.78638756600003, 21.828924872000073],\n\t\t\t\t[89.77572675900007, 21.82758209800005],\n\t\t\t\t[89.77116946700005, 21.83234284100007],\n\t\t\t\t[89.76587975400008, 21.84674713700008],\n\t\t\t\t[89.75342858200008, 21.843898830000057],\n\t\t\t\t[89.73845462300005, 21.834418036000045],\n\t\t\t\t[89.72584069100003, 21.828924872000073],\n\t\t\t\t[89.70915774800005, 21.83006419500009],\n\t\t\t\t[89.69044030000003, 21.833726304000038],\n\t\t\t\t[89.67335045700008, 21.84007396000004],\n\t\t\t\t[89.66130618600005, 21.849351304000038],\n\t\t\t\t[89.65691165500004, 21.857123114000046],\n\t\t\t\t[89.65316816500007, 21.867743231000077],\n\t\t\t\t[89.65259850400008, 21.878851630000042],\n\t\t\t\t[89.66334069100003, 21.896307684000078],\n\t\t\t\t[89.66130618600005, 21.90582916900007],\n\t\t\t\t[89.64698326900003, 21.925116278000075],\n\t\t\t\t[89.61898847700007, 21.86985911700009],\n\t\t\t\t[89.63038170700008, 21.85146719000005],\n\t\t\t\t[89.64975019600007, 21.82636139500005],\n\t\t\t\t[89.67204837300005, 21.80426666900007],\n\t\t\t\t[89.69206790500004, 21.79482656500005],\n\t\t\t\t[89.70069420700008, 21.784857489000046],\n\t\t\t\t[89.68995201900003, 21.76520416900007],\n\t\t\t\t[89.66822350400008, 21.750881252000056],\n\t\t\t\t[89.64356530000003, 21.75690338700008],\n\t\t\t\t[89.63152103000004, 21.764064846000053],\n\t\t\t\t[89.62037194100003, 21.76434967700004],\n\t\t\t\t[89.59546959700003, 21.75999583500004],\n\t\t\t\t[89.59278405000003, 21.754380601000037],\n\t\t\t\t[89.60377037900008, 21.727687893000052],\n\t\t\t\t[89.60596764400003, 21.71906159100007],\n\t\t\t\t[89.58692467500003, 21.700832424000055],\n\t\t\t\t[89.56568444100003, 21.713364976000037],\n\t\t\t\t[89.53711998800003, 21.75381094000005],\n\t\t\t\t[89.53891035200007, 21.77147044500009],\n\t\t\t\t[89.52735436300003, 21.81281159100007],\n\t\t\t\t[89.53028405000003, 21.835760809000078],\n\t\t\t\t[89.53834069100003, 21.84861888200004],\n\t\t\t\t[89.55689537900008, 21.868801174000055],\n\t\t\t\t[89.56446373800003, 21.88418203300006],\n\t\t\t\t[89.56763756600003, 21.90070221600007],\n\t\t\t\t[89.56348717500003, 21.973130601000037],\n\t\t\t\t[89.57129967500003, 22.03123607000009],\n\t\t\t\t[89.57667076900003, 22.051703192000048],\n\t\t\t\t[89.60059655000003, 22.09125397300005],\n\t\t\t\t[89.60596764400003, 22.113226630000042],\n\t\t\t\t[89.60254967500003, 22.134507554000038],\n\t\t\t\t[89.59376061300003, 22.155422268000052],\n\t\t\t\t[89.58139082100007, 22.17405833500004],\n\t\t\t\t[89.56788170700008, 22.18891022300005],\n\t\t\t\t[89.56723066500007, 22.202826239000046],\n\t\t\t\t[89.59791100400008, 22.240301825000074],\n\t\t\t\t[89.60596764400003, 22.25690338700008],\n\t\t\t\t[89.60710696700005, 22.278265692000048],\n\t\t\t\t[89.61060631600003, 22.298895575000074],\n\t\t\t\t[89.61695397200003, 22.318426825000074],\n\t\t\t\t[89.62647545700008, 22.336004950000074],\n\t\t\t\t[89.61548912900008, 22.328273830000057],\n\t\t\t\t[89.60621178500003, 22.315619208000044],\n\t\t\t\t[89.59245853000004, 22.288234768000052],\n\t\t\t\t[89.58082116000003, 22.27724844000005],\n\t\t\t\t[89.57715905000003, 22.268500067000048],\n\t\t\t\t[89.58619225400008, 22.245428778000075],\n\t\t\t\t[89.58033287900008, 22.236761786000045],\n\t\t\t\t[89.56104576900003, 22.223089911000045],\n\t\t\t\t[89.54916425900007, 22.20526764500005],\n\t\t\t\t[89.55030358200008, 22.19212474200009],\n\t\t\t\t[89.57129967500003, 22.157904364000046],\n\t\t\t\t[89.57634524800005, 22.14549388200004],\n\t\t\t\t[89.57878665500004, 22.135891018000052],\n\t\t\t\t[89.57935631600003, 22.113226630000042],\n\t\t\t\t[89.57699629000007, 22.101263739000046],\n\t\t\t\t[89.56674238400007, 22.082098700000074],\n\t\t\t\t[89.56446373800003, 22.072211005000042],\n\t\t\t\t[89.55648847700007, 22.00844961100006],\n\t\t\t\t[89.55144290500004, 21.99404531500005],\n\t\t\t\t[89.53288821700005, 21.98468659100007],\n\t\t\t\t[89.52475019600007, 22.000148830000057],\n\t\t\t\t[89.52344811300003, 22.044623114000046],\n\t\t\t\t[89.52613366000003, 22.055121161000045],\n\t\t\t\t[89.53646894600007, 22.075832424000055],\n\t\t\t\t[89.53711998800003, 22.089016018000052],\n\t\t\t\t[89.49203535200007, 22.188381252000056],\n\t\t\t\t[89.48943118600005, 22.208807684000078],\n\t\t\t\t[89.49415123800003, 22.253566799000055],\n\t\t\t\t[89.49301191500007, 22.273504950000074],\n\t\t\t\t[89.48316491000003, 22.295070705000057],\n\t\t\t\t[89.47575931100005, 22.295070705000057],\n\t\t\t\t[89.46745853000004, 22.228989976000037],\n\t\t\t\t[89.47575931100005, 22.10260651200008],\n\t\t\t\t[89.48316491000003, 22.10260651200008],\n\t\t\t\t[89.48406009200005, 22.11668528900009],\n\t\t\t\t[89.48878014400003, 22.12958405200004],\n\t\t\t\t[89.49415123800003, 22.136867580000057],\n\t\t\t\t[89.49683678500003, 22.133978583000044],\n\t\t\t\t[89.49822024800005, 22.12531159100007],\n\t\t\t\t[89.50171959700003, 22.113104559000078],\n\t\t\t\t[89.50684655000003, 22.10101959800005],\n\t\t\t\t[89.51295006600003, 22.09243398600006],\n\t\t\t\t[89.51832116000003, 22.081000067000048],\n\t\t\t\t[89.51742597700007, 22.066473700000074],\n\t\t\t\t[89.50912519600007, 22.04120514500005],\n\t\t\t\t[89.50416100400008, 22.03668854400007],\n\t\t\t\t[89.49187259200005, 22.03457265800006],\n\t\t\t\t[89.48943118600005, 22.03123607000009],\n\t\t\t\t[89.49040774800005, 22.023993231000077],\n\t\t\t\t[89.49268639400003, 22.019191799000055],\n\t\t\t\t[89.49683678500003, 22.01386139500005],\n\t\t\t\t[89.50049889400003, 22.00259023600006],\n\t\t\t\t[89.51270592500003, 21.97809479400007],\n\t\t\t\t[89.52003014400003, 21.969183661000045],\n\t\t\t\t[89.52182050900007, 21.96230703300006],\n\t\t\t\t[89.51254316500007, 21.909125067000048],\n\t\t\t\t[89.50228925900007, 21.89752838700008],\n\t\t\t\t[89.48910566500007, 21.888373114000046],\n\t\t\t\t[89.47575931100005, 21.876695054000038],\n\t\t\t\t[89.46461022200003, 21.859198309000078],\n\t\t\t\t[89.46363366000003, 21.845038153000075],\n\t\t\t\t[89.46705162900008, 21.828599351000037],\n\t\t\t\t[89.46949303500003, 21.804388739000046],\n\t\t\t\t[89.46583092500003, 21.781317450000074],\n\t\t\t\t[89.45622806100005, 21.76239655200004],\n\t\t\t\t[89.44271894600007, 21.746649481000077],\n\t\t\t\t[89.40642337300005, 21.717352606000077],\n\t\t\t\t[89.39519290500004, 21.71637604400007],\n\t\t\t\t[89.36963951900003, 21.743312893000052],\n\t\t\t\t[89.36426842500003, 21.758205471000053],\n\t\t\t\t[89.36280358200008, 21.78384023600006],\n\t\t\t\t[89.36589603000004, 21.828924872000073],\n\t\t\t\t[89.37126712300005, 21.84715403900009],\n\t\t\t\t[89.38428795700008, 21.877834377000056],\n\t\t\t\t[89.38697350400008, 21.901190497000073],\n\t\t\t\t[89.38266035200007, 21.92133209800005],\n\t\t\t\t[89.36402428500003, 21.95506419500009],\n\t\t\t\t[89.35962975400008, 21.972316799000055],\n\t\t\t\t[89.35222415500004, 21.972316799000055],\n\t\t\t\t[89.34595787900008, 21.95701732000009],\n\t\t\t\t[89.34880618600005, 21.944159247000073],\n\t\t\t\t[89.35523522200003, 21.93162669500009],\n\t\t\t\t[89.35962975400008, 21.917669989000046],\n\t\t\t\t[89.35962975400008, 21.901678778000075],\n\t\t\t\t[89.35596764400003, 21.892523505000042],\n\t\t\t\t[89.33912194100003, 21.876695054000038],\n\t\t\t\t[89.32886803500003, 21.86465078300006],\n\t\t\t\t[89.32260175900007, 21.854641018000052],\n\t\t\t\t[89.30616295700008, 21.817613023000035],\n\t\t\t\t[89.30128014400003, 21.809393622000073],\n\t\t\t\t[89.29623457100007, 21.809068101000037],\n\t\t\t\t[89.29070071700005, 21.822088934000078],\n\t\t\t\t[89.28394616000003, 21.822088934000078],\n\t\t\t\t[89.28443444100003, 21.796820380000042],\n\t\t\t\t[89.29468834700003, 21.75779857000009],\n\t\t\t\t[89.29070071700005, 21.733343817000048],\n\t\t\t\t[89.27369225400008, 21.69879791900007],\n\t\t\t\t[89.27662194100003, 21.687567450000074],\n\t\t\t\t[89.29753665500004, 21.678127346000053],\n\t\t\t\t[89.28589928500003, 21.66559479400007],\n\t\t\t\t[89.26872806100005, 21.653998114000046],\n\t\t\t\t[89.24870853000004, 21.64590078300006],\n\t\t\t\t[89.22925866000003, 21.64394765800006],\n\t\t\t\t[89.21045983200008, 21.654120184000078],\n\t\t\t\t[89.20443769600007, 21.672674872000073],\n\t\t\t\t[89.20826256600003, 21.690619208000044],\n\t\t\t\t[89.21859785200007, 21.698553778000075],\n\t\t\t\t[89.22071373800003, 21.709418036000045],\n\t\t\t\t[89.18970787900008, 21.79124583500004],\n\t\t\t\t[89.18824303500003, 21.799709377000056],\n\t\t\t\t[89.18767337300005, 21.81150950700004],\n\t\t\t\t[89.18336022200003, 21.815619208000044],\n\t\t\t\t[89.17408287900008, 21.81004466400009],\n\t\t\t\t[89.16456139400003, 21.80019765800006],\n\t\t\t\t[89.16041100400008, 21.79132721600007],\n\t\t\t\t[89.15455162900008, 21.786851304000038],\n\t\t\t\t[89.14128665500004, 21.790228583000044],\n\t\t\t\t[89.11939537900008, 21.80097077000005],\n\t\t\t\t[89.10906009200005, 21.809515692000048],\n\t\t\t\t[89.10466556100005, 21.81586334800005],\n\t\t\t\t[89.07992597700007, 21.897406317000048],\n\t\t\t\t[89.07781009200005, 21.91425202000005],\n\t\t\t\t[89.08041425900007, 21.934881903000075],\n\t\t\t\t[89.09107506600003, 21.97679271000004],\n\t\t\t\t[89.09148196700005, 22.00023021000004],\n\t\t\t\t[89.08423912900008, 22.021185614000046],\n\t\t\t\t[89.06202233200008, 22.04950592700004],\n\t\t\t\t[89.05738366000003, 22.06509023600006],\n\t\t\t\t[89.06348717500003, 22.111029364000046],\n\t\t\t\t[89.06039472700007, 22.12986888200004],\n\t\t\t\t[89.06069258700006, 22.130484925000076],\n\t\t\t\t[89.07815922000009, 22.150845439000122],\n\t\t\t\t[89.07619551700009, 22.175030009000082],\n\t\t\t\t[89.07071781400009, 22.194822083000062],\n\t\t\t\t[89.06229455500011, 22.21156524700011],\n\t\t\t\t[89.01862797100011, 22.26468861900004],\n\t\t\t\t[89.00911950700004, 22.285617575000046],\n\t\t\t\t[89.02353723100003, 22.294815979000035],\n\t\t\t\t[89.00694909700013, 22.32142934200006],\n\t\t\t\t[89.00152307100007, 22.333676656000094],\n\t\t\t\t[88.98958581600004, 22.386903382000057],\n\t\t\t\t[88.98948246300012, 22.396670227000115],\n\t\t\t\t[88.99216963700013, 22.406953837000103],\n\t\t\t\t[89.00074792500004, 22.420131328000068],\n\t\t\t\t[89.00250492300006, 22.427986145000105],\n\t\t\t\t[88.99837080900011, 22.45124053900004],\n\t\t\t\t[88.979974, 22.490928039000025],\n\t\t\t\t[88.97098230000006, 22.52792836500008],\n\t\t\t\t[88.95904504400005, 22.53681671100007],\n\t\t\t\t[88.9279875090001, 22.54813385000007],\n\t\t\t\t[88.95031172700004, 22.561983134000016],\n\t\t\t\t[88.95640954600003, 22.584979146000066],\n\t\t\t\t[88.95201704900012, 22.611902568000076],\n\t\t\t\t[88.9423535570001, 22.637482402000032],\n\t\t\t\t[88.93000288900004, 22.658618063000077],\n\t\t\t\t[88.92592045100014, 22.680838928000114],\n\t\t\t\t[88.92250980600011, 22.69370636000012],\n\t\t\t\t[88.91057255100009, 22.722593486000065],\n\t\t\t\t[88.90814375800011, 22.74078359000002],\n\t\t\t\t[88.91496504800006, 22.75440033000011],\n\t\t\t\t[88.92623051000004, 22.767035218000032],\n\t\t\t\t[88.9368758550001, 22.782331441000096],\n\t\t\t\t[88.94121667500008, 22.795663961000017],\n\t\t\t\t[88.94514408400005, 22.815094300000098],\n\t\t\t\t[88.94679773000013, 22.834524638000076],\n\t\t\t\t[88.94452396600008, 22.848012187000037],\n\t\t\t\t[88.93310347500011, 22.85811492900008],\n\t\t\t\t[88.90514652600007, 22.86643483500005],\n\t\t\t\t[88.89346765200008, 22.879638164000127],\n\t\t\t\t[88.87217696100004, 22.926767070000054],\n\t\t\t\t[88.86173832200006, 22.942399190000074],\n\t\t\t\t[88.84277307100012, 22.964568380000017],\n\t\t\t\t[88.83879398700009, 22.975808004000058],\n\t\t\t\t[88.83941410300014, 22.995367534000067],\n\t\t\t\t[88.84871586100007, 23.02384124800001],\n\t\t\t\t[88.85129968300004, 23.07513010700005],\n\t\t\t\t[88.86478723200014, 23.10027069100009],\n\t\t\t\t[88.91909916200007, 23.153859152000038],\n\t\t\t\t[88.94586755400007, 23.174348857000027],\n\t\t\t\t[88.95470422400007, 23.18380564400009],\n\t\t\t\t[88.95982019100006, 23.19445098900006],\n\t\t\t\t[88.9599752200001, 23.2026933800001],\n\t\t\t\t[88.95423913600013, 23.207421773000092],\n\t\t\t\t[88.92695398000012, 23.206517436000055],\n\t\t\t\t[88.91806563300008, 23.208584493],\n\t\t\t\t[88.90964237500003, 23.212434388000062],\n\t\t\t\t[88.83962080900011, 23.234810283000044],\n\t\t\t\t[88.82267093900009, 23.237962545000087],\n\t\t\t\t[88.80954512500011, 23.236050517000066],\n\t\t\t\t[88.80096683800008, 23.23075368300003],\n\t\t\t\t[88.79419722500006, 23.224965922000067],\n\t\t\t\t[88.78618737800008, 23.221529439000037],\n\t\t\t\t[88.77569706300011, 23.22163279200005],\n\t\t\t\t[88.71001631700005, 23.241218160000088],\n\t\t\t\t[88.69658044500011, 23.252354432000104],\n\t\t\t\t[88.68660689300003, 23.271603902000024],\n\t\t\t\t[88.68593510000005, 23.293308004000025],\n\t\t\t\t[88.69503015100008, 23.312609152000064],\n\t\t\t\t[88.71926639800006, 23.348291728000063],\n\t\t\t\t[88.76789392100011, 23.467276713],\n\t\t\t\t[88.77016768400011, 23.48882578600005],\n\t\t\t\t[88.7568351650001, 23.49879933700005],\n\t\t\t\t[88.74370935100012, 23.489316711000086],\n\t\t\t\t[88.73192712400004, 23.472625224000055],\n\t\t\t\t[88.71942142800003, 23.468103536000015],\n\t\t\t\t[88.70464196800003, 23.495181986000077],\n\t\t\t\t[88.69378991700006, 23.499807028000035],\n\t\t\t\t[88.66448938000008, 23.518307190000073],\n\t\t\t\t[88.64764286400003, 23.535076193000023],\n\t\t\t\t[88.62423344000007, 23.573859355000067],\n\t\t\t\t[88.6092472740001, 23.588793844000023],\n\t\t\t\t[88.60128910400005, 23.59034413700003],\n\t\t\t\t[88.58154870600009, 23.58832875600008],\n\t\t\t\t[88.57142012600013, 23.592333679000077],\n\t\t\t\t[88.56170495600009, 23.602023010000025],\n\t\t\t\t[88.5610848390001, 23.608611756000087],\n\t\t\t\t[88.56439213100009, 23.61620819100007],\n\t\t\t\t[88.56635583500014, 23.628739726000063],\n\t\t\t\t[88.56123986800003, 23.632486268],\n\t\t\t\t[88.55095625800004, 23.6344241340001],\n\t\t\t\t[88.54155114800011, 23.63876495400008],\n\t\t\t\t[88.54010420800012, 23.64995290100005],\n\t\t\t\t[88.56118819200003, 23.74100677500006],\n\t\t\t\t[88.55974125200004, 23.75028269500008],\n\t\t\t\t[88.55250655100008, 23.765423890000093],\n\t\t\t\t[88.55271325700005, 23.774984029],\n\t\t\t\t[88.55767419400007, 23.785681051000026],\n\t\t\t\t[88.57235030200007, 23.806894226000068],\n\t\t\t\t[88.57751794500007, 23.818521424000025],\n\t\t\t\t[88.57762129700012, 23.827616476000102],\n\t\t\t\t[88.5754508870001, 23.836556499000025],\n\t\t\t\t[88.57436568200012, 23.845625712000086],\n\t\t\t\t[88.57762129700012, 23.855160014000077],\n\t\t\t\t[88.59358931500003, 23.866916402000086],\n\t\t\t\t[88.61317468300007, 23.867846578000027],\n\t\t\t\t[88.63394860900007, 23.866141256000063],\n\t\t\t\t[88.65312056500011, 23.869784445000064],\n\t\t\t\t[88.66650476100006, 23.87949961400001],\n\t\t\t\t[88.70443526200006, 23.913709412000102],\n\t\t\t\t[88.71415043100006, 23.925155742000115],\n\t\t\t\t[88.71714766500003, 23.9431391400001],\n\t\t\t\t[88.71435713700004, 23.964403992000072],\n\t\t\t\t[88.70836267100003, 23.98355011000008],\n\t\t\t\t[88.70159305800007, 23.995280660000063],\n\t\t\t\t[88.7138403730001, 24.01468516100003],\n\t\t\t\t[88.72546757000009, 24.028896179000085],\n\t\t\t\t[88.72500248200004, 24.03837880500008],\n\t\t\t\t[88.70092126500009, 24.043649801000086],\n\t\t\t\t[88.69782067900007, 24.05625885000002],\n\t\t\t\t[88.67901045700006, 24.071219178],\n\t\t\t\t[88.67410119700003, 24.082639669000102],\n\t\t\t\t[88.67539310700005, 24.09183807400008],\n\t\t\t\t[88.68180098500011, 24.112663676000054],\n\t\t\t\t[88.68298954300013, 24.12429087300002],\n\t\t\t\t[88.67828698800014, 24.144651388000042],\n\t\t\t\t[88.67808028100006, 24.154289043000077],\n\t\t\t\t[88.68376468900004, 24.166536356000094],\n\t\t\t\t[88.69378991700006, 24.17532135100008],\n\t\t\t\t[88.71590743000007, 24.182917786000033],\n\t\t\t\t[88.73145573500011, 24.1897713150001],\n\t\t\t\t[88.73161706600013, 24.18984242800012],\n\t\t\t\t[88.73482100400008, 24.19842071500007],\n\t\t\t\t[88.74639652500014, 24.21407867500001],\n\t\t\t\t[88.74980717000005, 24.223251242000103],\n\t\t\t\t[88.74748173000006, 24.226971945000017],\n\t\t\t\t[88.74494958500009, 24.24337921200008],\n\t\t\t\t[88.74303755700004, 24.24753916500002],\n\t\t\t\t[88.73750817900003, 24.28709747300006],\n\t\t\t\t[88.71456384300012, 24.315416158000048],\n\t\t\t\t[88.68180098500011, 24.333890483000076],\n\t\t\t\t[88.66014856000004, 24.338257141000057],\n\t\t\t\t[88.64950321500004, 24.31536448200002],\n\t\t\t\t[88.63451705000006, 24.294125468000047],\n\t\t\t\t[88.61245121300004, 24.292885234000025],\n\t\t\t\t[88.56310021900003, 24.308207296000077],\n\t\t\t\t[88.49834965000008, 24.31097198500005],\n\t\t\t\t[88.47540531400011, 24.315467835000064],\n\t\t\t\t[88.40130131100011, 24.36941803000012],\n\t\t\t\t[88.13878503400008, 24.495250143000092],\n\t\t\t\t[88.10994958500004, 24.50098622700007],\n\t\t\t\t[88.10793420400006, 24.50796254500007],\n\t\t\t\t[88.0987874760001, 24.5224836230001],\n\t\t\t\t[88.09000248300003, 24.532999777000057],\n\t\t\t\t[88.08602339700013, 24.536720480000085],\n\t\t\t\t[88.08498986800004, 24.541733093000047],\n\t\t\t\t[88.08498986800004, 24.593874614000086],\n\t\t\t\t[88.08183760600008, 24.599869080000033],\n\t\t\t\t[88.06726485200005, 24.613666687000077],\n\t\t\t\t[88.05723962400003, 24.63410471600004],\n\t\t\t\t[88.04090987200004, 24.640435079000056],\n\t\t\t\t[88.02178959200006, 24.64560272200005],\n\t\t\t\t[88.02716394100014, 24.675730082000044],\n\t\t\t\t[88.0354321690001, 24.69381683400006],\n\t\t\t\t[88.04845463100014, 24.71120595300009],\n\t\t\t\t[88.05320886200013, 24.754975891000086],\n\t\t\t\t[88.06426761900013, 24.759161682000112],\n\t\t\t\t[88.07698002200004, 24.761177063000062],\n\t\t\t\t[88.0840080160001, 24.770452983000084],\n\t\t\t\t[88.08535160400004, 24.78401804600007],\n\t\t\t\t[88.08824548300004, 24.796136170000054],\n\t\t\t\t[88.09480839000008, 24.803112488000053],\n\t\t\t\t[88.10777917500013, 24.801097107000103],\n\t\t\t\t[88.11739099100004, 24.81926137300003],\n\t\t\t\t[88.13124027500004, 24.831767070000055],\n\t\t\t\t[88.14095544500003, 24.844582825000103],\n\t\t\t\t[88.13806156400005, 24.863496399000056],\n\t\t\t\t[88.12493575100012, 24.89814544700006],\n\t\t\t\t[88.12033654800007, 24.906775411000027],\n\t\t\t\t[88.11491052200006, 24.912020569000035],\n\t\t\t\t[88.11491052200006, 24.916413066000032],\n\t\t\t\t[88.16451989700005, 24.941114400000046],\n\t\t\t\t[88.1830200610001, 24.946979675000037],\n\t\t\t\t[88.20245039900004, 24.945300191000072],\n\t\t\t\t[88.21878015100009, 24.93514577200004],\n\t\t\t\t[88.23283614100012, 24.918273417000037],\n\t\t\t\t[88.24187951700009, 24.898765564000044],\n\t\t\t\t[88.24275801600004, 24.880601299000105],\n\t\t\t\t[88.25485030100009, 24.87995534300005],\n\t\t\t\t[88.29681156400011, 24.86969757100006],\n\t\t\t\t[88.31360640500009, 24.868302307000064],\n\t\t\t\t[88.32275313400004, 24.8746843470001],\n\t\t\t\t[88.34089156100009, 24.904139913],\n\t\t\t\t[88.37566980000014, 24.945610251000076],\n\t\t\t\t[88.38786543800006, 24.968761292000053],\n\t\t\t\t[88.39101770100007, 24.99509043400012],\n\t\t\t\t[88.41411706500008, 25.021522929000085],\n\t\t\t\t[88.42579593900007, 25.051056010000124],\n\t\t\t\t[88.43416752100012, 25.11665924100005],\n\t\t\t\t[88.4314803470001, 25.173038229000056],\n\t\t\t\t[88.44129886900004, 25.189729716],\n\t\t\t\t[88.47540531400011, 25.195104065000052],\n\t\t\t\t[88.49183842000008, 25.191124980000083],\n\t\t\t\t[88.5231543380001, 25.179807841000112],\n\t\t\t\t[88.5500260820001, 25.1731415820001],\n\t\t\t\t[88.55467696100004, 25.171126201000035],\n\t\t\t\t[88.55937951600004, 25.17076446600005],\n\t\t\t\t[88.57069665500012, 25.173244935000028],\n\t\t\t\t[88.57772465000005, 25.177482401000063],\n\t\t\t\t[88.59012699400012, 25.190143127000013],\n\t\t\t\t[88.59911869300004, 25.193140361000033],\n\t\t\t\t[88.6342586670001, 25.19226186200008],\n\t\t\t\t[88.66459273300012, 25.18688751200004],\n\t\t\t\t[88.72453739400004, 25.166475322000068],\n\t\t\t\t[88.78422367300004, 25.16094594400009],\n\t\t\t\t[88.79233687400006, 25.166578675000025],\n\t\t\t\t[88.80251713100012, 25.188127747000053],\n\t\t\t\t[88.8091317140001, 25.195259094],\n\t\t\t\t[88.81708988500009, 25.19680938700013],\n\t\t\t\t[88.82360111500003, 25.194845683],\n\t\t\t\t[88.83021569900012, 25.191331686000026],\n\t\t\t\t[88.89863529500013, 25.169317526000057],\n\t\t\t\t[88.92416345200007, 25.167870585000074],\n\t\t\t\t[88.90964237500003, 25.189161275000046],\n\t\t\t\t[88.92788415600006, 25.192726949000118],\n\t\t\t\t[88.93077803600005, 25.202648825000026],\n\t\t\t\t[88.9279875090001, 25.215929667000026],\n\t\t\t\t[88.9290727130001, 25.229417216000073],\n\t\t\t\t[88.93775435400005, 25.240165914],\n\t\t\t\t[88.97532312000004, 25.265228984000103],\n\t\t\t\t[88.98235111500009, 25.27489247700005],\n\t\t\t\t[88.98493493700005, 25.284969381000067],\n\t\t\t\t[88.98271285000004, 25.29447784400007],\n\t\t\t\t[88.97532312000004, 25.302642721000083],\n\t\t\t\t[88.92648889200007, 25.300472310000075],\n\t\t\t\t[88.90287276200007, 25.30341786700008],\n\t\t\t\t[88.88612959800014, 25.31907582600006],\n\t\t\t\t[88.88018680800008, 25.32346832300003],\n\t\t\t\t[88.85925785400013, 25.32470855700008],\n\t\t\t\t[88.84902592000003, 25.327189026000056],\n\t\t\t\t[88.84199792500004, 25.332821757000076],\n\t\t\t\t[88.81833011900011, 25.35964182600007],\n\t\t\t\t[88.81404097600006, 25.370390524000086],\n\t\t\t\t[88.81326582800011, 25.380054016000102],\n\t\t\t\t[88.81037194800012, 25.388425598000097],\n\t\t\t\t[88.79962325000014, 25.39560862300003],\n\t\t\t\t[88.79931319200006, 25.401706442000105],\n\t\t\t\t[88.81631473800007, 25.437208151000036],\n\t\t\t\t[88.81491947500007, 25.45860219300006],\n\t\t\t\t[88.80582442200011, 25.471676331000097],\n\t\t\t\t[88.79311202000014, 25.481959941000085],\n\t\t\t\t[88.78096805800004, 25.495189108000105],\n\t\t\t\t[88.77233809500012, 25.501958720000047],\n\t\t\t\t[88.74195235200006, 25.51275909400006],\n\t\t\t\t[88.74257246900004, 25.495189108000105],\n\t\t\t\t[88.73265059500011, 25.49100331700005],\n\t\t\t\t[88.72314213100003, 25.49141672800006],\n\t\t\t\t[88.71415043100006, 25.492811992000057],\n\t\t\t\t[88.70619226100013, 25.49167511000003],\n\t\t\t\t[88.69565026900005, 25.48361358600006],\n\t\t\t\t[88.68707198100003, 25.47389841700003],\n\t\t\t\t[88.67808028100006, 25.465888570000047],\n\t\t\t\t[88.66634973200013, 25.46289133800012],\n\t\t\t\t[88.64542077600004, 25.46733551000004],\n\t\t\t\t[88.61317468300007, 25.486404114000024],\n\t\t\t\t[88.59358931500003, 25.495085755000062],\n\t\t\t\t[88.55095625800004, 25.49648101800004],\n\t\t\t\t[88.53028568600013, 25.500201721000067],\n\t\t\t\t[88.52046716400008, 25.50929677400002],\n\t\t\t\t[88.51276737500007, 25.523714498000047],\n\t\t\t\t[88.48558557100012, 25.542628072000085],\n\t\t\t\t[88.47540531400011, 25.56257517600001],\n\t\t\t\t[88.43778487200012, 25.579835104],\n\t\t\t\t[88.42378055900008, 25.592237447000073],\n\t\t\t\t[88.41943973800011, 25.653784078000072],\n\t\t\t\t[88.39298140400012, 25.680759176000024],\n\t\t\t\t[88.32027266500006, 25.725252584000103],\n\t\t\t\t[88.25991459200009, 25.789021301000034],\n\t\t\t\t[88.22746179300003, 25.80426584900006],\n\t\t\t\t[88.18271000200008, 25.792431946000065],\n\t\t\t\t[88.16622522000011, 25.78364695300006],\n\t\t\t\t[88.14643314600005, 25.77574045800013],\n\t\t\t\t[88.12772627800007, 25.77491363500009],\n\t\t\t\t[88.11491052200006, 25.787264303000043],\n\t\t\t\t[88.1080375570001, 25.806281230000124],\n\t\t\t\t[88.10333500200005, 25.814807841000047],\n\t\t\t\t[88.08757369000006, 25.830982564000024],\n\t\t\t\t[88.08757369000006, 25.839974264000077],\n\t\t\t\t[88.08896895400005, 25.84865590400004],\n\t\t\t\t[88.08204431200005, 25.86384877600007],\n\t\t\t\t[88.07439620000008, 25.90813547800009],\n\t\t\t\t[88.07739343300005, 25.91278635700006],\n\t\t\t\t[88.08266442900003, 25.9159386190001],\n\t\t\t\t[88.08803877800005, 25.923224996],\n\t\t\t\t[88.10653894000012, 25.97996571900002],\n\t\t\t\t[88.12586592600007, 26.013400371],\n\t\t\t\t[88.1510323490001, 26.031332093000074],\n\t\t\t\t[88.15790531400006, 26.050452373000056],\n\t\t\t\t[88.15640669800007, 26.061407776000053],\n\t\t\t\t[88.15098067200006, 26.066988830000057],\n\t\t\t\t[88.14477950000008, 26.0705028280001],\n\t\t\t\t[88.14116215000013, 26.075463766000055],\n\t\t\t\t[88.13992191600005, 26.085333964000043],\n\t\t\t\t[88.14136885600004, 26.090501607000036],\n\t\t\t\t[88.14446944200012, 26.095875957000104],\n\t\t\t\t[88.15563155100006, 26.128483785000057],\n\t\t\t\t[88.16379642800007, 26.140472717000122],\n\t\t\t\t[88.19692102100004, 26.159644674000035],\n\t\t\t\t[88.20565433800004, 26.16641428700008],\n\t\t\t\t[88.21195886300006, 26.173752340000064],\n\t\t\t\t[88.21888350500012, 26.180160217000022],\n\t\t\t\t[88.22978723200009, 26.18403595000005],\n\t\t\t\t[88.25030277600007, 26.18801503500005],\n\t\t\t\t[88.30869714400012, 26.206101787000065],\n\t\t\t\t[88.32626713100012, 26.215920309000026],\n\t\t\t\t[88.33453536000013, 26.23080312100008],\n\t\t\t\t[88.33293339100004, 26.267235006000064],\n\t\t\t\t[88.33660241700011, 26.281807760000035],\n\t\t\t\t[88.35169193600012, 26.300979717000033],\n\t\t\t\t[88.36678145400003, 26.31343373600002],\n\t\t\t\t[88.41380700700006, 26.340202129000076],\n\t\t\t\t[88.42119673700012, 26.348728740000112],\n\t\t\t\t[88.4260026450001, 26.35792714500009],\n\t\t\t\t[88.43168705300013, 26.362216289000074],\n\t\t\t\t[88.44202233900006, 26.356118470000112],\n\t\t\t\t[88.44863692200005, 26.353431295000078],\n\t\t\t\t[88.4579903560001, 26.353017883000078],\n\t\t\t\t[88.46791223200006, 26.35405141200006],\n\t\t\t\t[88.47540531400011, 26.35580841100004],\n\t\t\t\t[88.49762618100004, 26.352707825],\n\t\t\t\t[88.49545577000009, 26.378080953000094],\n\t\t\t\t[88.47540531400011, 26.432031148000036],\n\t\t\t\t[88.46114261900004, 26.453890280000067],\n\t\t\t\t[88.43458093200013, 26.465155741000032],\n\t\t\t\t[88.37691003500004, 26.475335999000023],\n\t\t\t\t[88.35355228700013, 26.484586080000028],\n\t\t\t\t[88.34652429200008, 26.484017639000072],\n\t\t\t\t[88.34301029400007, 26.477196351000103],\n\t\t\t\t[88.34021976700006, 26.454148662000065],\n\t\t\t\t[88.33562056500006, 26.44820587200003],\n\t\t\t\t[88.32254642700008, 26.451771546000103],\n\t\t\t\t[88.31510502100008, 26.465052389],\n\t\t\t\t[88.31386478700006, 26.481537170000095],\n\t\t\t\t[88.31934248900012, 26.494921367000032],\n\t\t\t\t[88.33236495000006, 26.514661764],\n\t\t\t\t[88.35282881700005, 26.578688864000085],\n\t\t\t\t[88.36027022300004, 26.59310658800011],\n\t\t\t\t[88.37251753700008, 26.611606751000025],\n\t\t\t\t[88.38528161700003, 26.623544007000064],\n\t\t\t\t[88.39437666800012, 26.61801462800007],\n\t\t\t\t[88.39592696100004, 26.599566142000057],\n\t\t\t\t[88.39499678600009, 26.578378805000014],\n\t\t\t\t[88.39789066600008, 26.558690084000048],\n\t\t\t\t[88.41101648000011, 26.545099182000072],\n\t\t\t\t[88.44646651200009, 26.53553904300007],\n\t\t\t\t[88.46238285300007, 26.528821106000052],\n\t\t\t\t[88.47540531400011, 26.514971823000067],\n\t\t\t\t[88.48791101100011, 26.50577341800009],\n\t\t\t\t[88.49865970900004, 26.4948696900001],\n\t\t\t\t[88.50682458500006, 26.487634989000057],\n\t\t\t\t[88.52682336400011, 26.475387676000125],\n\t\t\t\t[88.54976770000013, 26.466654358000042],\n\t\t\t\t[88.55798425300009, 26.465724182000102],\n\t\t\t\t[88.57917159000004, 26.466034241000088],\n\t\t\t\t[88.59116052200005, 26.46122833300008],\n\t\t\t\t[88.59787845900007, 26.451461487000117],\n\t\t\t\t[88.60356286700005, 26.44019602500005],\n\t\t\t\t[88.6115210370001, 26.43084259100003],\n\t\t\t\t[88.62237308800007, 26.424538066000096],\n\t\t\t\t[88.63301843300013, 26.4200938930001],\n\t\t\t\t[88.65627282700007, 26.41513295500006],\n\t\t\t\t[88.65193200700008, 26.407071432000052],\n\t\t\t\t[88.64986495000005, 26.3983897910001],\n\t\t\t\t[88.6522420660001, 26.39151682600003],\n\t\t\t\t[88.66107873600009, 26.388881328000124],\n\t\t\t\t[88.66852014200009, 26.385729065000064],\n\t\t\t\t[88.66743493700011, 26.36815907800009],\n\t\t\t\t[88.67337772700012, 26.360717672000064],\n\t\t\t\t[88.69627038600004, 26.350279032000046],\n\t\t\t\t[88.70970625900009, 26.34061554],\n\t\t\t\t[88.71223840300007, 26.328264872000048],\n\t\t\t\t[88.70298832200007, 26.309661357],\n\t\t\t\t[88.69012089100005, 26.299842835000035],\n\t\t\t\t[88.65327559400004, 26.283099671000073],\n\t\t\t\t[88.64583418800004, 26.27601999900004],\n\t\t\t\t[88.6634041750001, 26.26444447900009],\n\t\t\t\t[88.74794681800006, 26.292504782000023],\n\t\t\t\t[88.78401696800006, 26.27994740900003],\n\t\t\t\t[88.79202681500004, 26.264599508000046],\n\t\t\t\t[88.7984863690001, 26.247649638000055],\n\t\t\t\t[88.80799483200008, 26.23343861900007],\n\t\t\t\t[88.82484134900005, 26.22656565400011],\n\t\t\t\t[88.84065433800009, 26.2320433550001],\n\t\t\t\t[88.85564050400012, 26.2651162720001],\n\t\t\t\t[88.8757943110001, 26.27736358600002],\n\t\t\t\t[88.90271773300003, 26.272919414000015],\n\t\t\t\t[88.94684940600013, 26.232921855000043],\n\t\t\t\t[88.97532312000004, 26.22434356700002],\n\t\t\t\t[89.01945479300014, 26.23447214800005],\n\t\t\t\t[89.03971195500003, 26.24718455000003],\n\t\t\t\t[89.03433760600007, 26.26578806600007],\n\t\t\t\t[89.02353723100003, 26.2688369750001],\n\t\t\t\t[89.01159997600013, 26.2691987110001],\n\t\t\t\t[89.00436527500005, 26.275709941000073],\n\t\t\t\t[89.00798262600011, 26.29715566],\n\t\t\t\t[88.99862919200007, 26.291522929000067],\n\t\t\t\t[88.98968916900009, 26.289404195000074],\n\t\t\t\t[88.9817309980001, 26.291832987000063],\n\t\t\t\t[88.97532312000004, 26.29994618800005],\n\t\t\t\t[88.96602136200005, 26.328471578000105],\n\t\t\t\t[88.94121667500008, 26.340098775000072],\n\t\t\t\t[88.91243290200009, 26.348935445000066],\n\t\t\t\t[88.89186568200006, 26.368779196000062],\n\t\t\t\t[88.89124556500013, 26.38578074100006],\n\t\t\t\t[88.89946211800003, 26.40448761000006],\n\t\t\t\t[88.91196781400004, 26.421230774000023],\n\t\t\t\t[88.92457686400007, 26.43213450100008],\n\t\t\t\t[88.94100996900005, 26.439420878000064],\n\t\t\t\t[88.95015669700012, 26.436940410000076],\n\t\t\t\t[88.95930342700012, 26.428568828],\n\t\t\t\t[88.97532312000004, 26.417871806000093],\n\t\t\t\t[88.98653690600008, 26.4127041630001],\n\t\t\t\t[89.00178145400014, 26.397149557000077],\n\t\t\t\t[89.01087650500011, 26.390173239000077],\n\t\t\t\t[89.02178023300007, 26.38624582900009],\n\t\t\t\t[89.04374271700004, 26.381078186000096],\n\t\t\t\t[89.05263106300004, 26.374618632000036],\n\t\t\t\t[89.05728194200003, 26.362629700000085],\n\t\t\t\t[89.05407800300003, 26.353948059000018],\n\t\t\t\t[89.05521488500005, 26.347023417000045],\n\t\t\t\t[89.07185469600006, 26.34061554],\n\t\t\t\t[89.09572920800008, 26.33451772100004],\n\t\t\t\t[89.10291223200011, 26.327334696],\n\t\t\t\t[89.10353234900009, 26.313692118000077],\n\t\t\t\t[89.09479903200014, 26.30950632700005],\n\t\t\t\t[89.0803296310001, 26.315604146000013],\n\t\t\t\t[89.0688574620001, 26.314260559000033],\n\t\t\t\t[89.06942590300014, 26.287388815000057],\n\t\t\t\t[89.07588545700008, 26.271059062000106],\n\t\t\t\t[89.09588423700012, 26.24103505500004],\n\t\t\t\t[89.10337732000005, 26.22517039000003],\n\t\t\t\t[89.11169722500011, 26.16450225900006],\n\t\t\t\t[89.11919030800004, 26.1466222130001],\n\t\t\t\t[89.13159265100012, 26.133754781],\n\t\t\t\t[89.19784183700011, 26.107709859000025],\n\t\t\t\t[89.21262129800004, 26.098976543000063],\n\t\t\t\t[89.22305993600008, 26.086574198000065],\n\t\t\t\t[89.22926110800006, 26.067195537000103],\n\t\t\t\t[89.23763269000011, 26.058100484000036],\n\t\t\t\t[89.27297937100013, 26.043476054000067],\n\t\t\t\t[89.29690555800005, 26.0181546030001],\n\t\t\t\t[89.31514733900008, 26.006785787000084],\n\t\t\t\t[89.33530114700005, 25.998569235000062],\n\t\t\t\t[89.35147587100005, 25.996863912000023],\n\t\t\t\t[89.3677539470001, 26.005442200000047],\n\t\t\t\t[89.37974287900005, 26.015312399000024],\n\t\t\t\t[89.39142175300003, 26.015467428000065],\n\t\t\t\t[89.40661462500003, 25.995055237000102],\n\t\t\t\t[89.4112655030001, 25.993194885000023],\n\t\t\t\t[89.41612308700013, 25.992626444000066],\n\t\t\t\t[89.42118737800007, 25.993194885000023],\n\t\t\t\t[89.42635502100012, 25.994951884000088],\n\t\t\t\t[89.42640669700012, 25.995055237000102],\n\t\t\t\t[89.48061527500005, 25.999241028000043],\n\t\t\t\t[89.4856278900001, 25.998724263000028],\n\t\t\t\t[89.49064050300007, 25.997329],\n\t\t\t\t[89.49534305900005, 25.995055237000102],\n\t\t\t\t[89.50945072500008, 25.97262766500002],\n\t\t\t\t[89.51818404200003, 25.96208567400005],\n\t\t\t\t[89.52841597500003, 25.957124735000022],\n\t\t\t\t[89.54169681900004, 25.959708558],\n\t\t\t\t[89.54908654800005, 25.96885528600008],\n\t\t\t\t[89.55182539900011, 25.98151601200003],\n\t\t\t\t[89.55068851700008, 25.995055237000102],\n\t\t\t\t[89.55916345200006, 26.02223704],\n\t\t\t\t[89.60288171400009, 26.055258280000075],\n\t\t\t\t[89.61135664900007, 26.072208150000066],\n\t\t\t\t[89.60386356700013, 26.084662171000062],\n\t\t\t\t[89.5907894290001, 26.085023906000046],\n\t\t\t\t[89.57694014500004, 26.082646790000112],\n\t\t\t\t[89.56701827000012, 26.087090963000023],\n\t\t\t\t[89.56691491700008, 26.098976543000063],\n\t\t\t\t[89.57787032100009, 26.107244771000083],\n\t\t\t\t[89.59254642800005, 26.113962708000102],\n\t\t\t\t[89.60422530100004, 26.120732320000073],\n\t\t\t\t[89.58577681500003, 26.122902731000053],\n\t\t\t\t[89.56939538600005, 26.130085754],\n\t\t\t\t[89.56278080300007, 26.142591452000104],\n\t\t\t\t[89.57342614800007, 26.16072987900013],\n\t\t\t\t[89.57993737800012, 26.166104228000094],\n\t\t\t\t[89.58675866700008, 26.169204814000025],\n\t\t\t\t[89.59399336800004, 26.16972157800008],\n\t\t\t\t[89.6144055580001, 26.164192200000073],\n\t\t\t\t[89.61528405800004, 26.169101461000096],\n\t\t\t\t[89.60846276900008, 26.180676982000037],\n\t\t\t\t[89.60639571100012, 26.2110110470001],\n\t\t\t\t[89.61332035300012, 26.219382629000066],\n\t\t\t\t[89.63492110200008, 26.22584218300001],\n\t\t\t\t[89.65300785400007, 26.222689921000054],\n\t\t\t\t[89.65838220200004, 26.207858785000028],\n\t\t\t\t[89.6578286080001, 26.18717448300005],\n\t\t\t\t[89.65724532100006, 26.165380758000097],\n\t\t\t\t[89.65579838100007, 26.161298320000085],\n\t\t\t\t[89.65817549700012, 26.159231262000034],\n\t\t\t\t[89.6703711340001, 26.15411529600003],\n\t\t\t\t[89.67770918800011, 26.153133443000073],\n\t\t\t\t[89.69765629100004, 26.154787089000095],\n\t\t\t\t[89.70654463700004, 26.154166972000056],\n\t\t\t\t[89.7184818930001, 26.14553700800009],\n\t\t\t\t[89.72432133000007, 26.130654195000048],\n\t\t\t\t[89.72876550300009, 26.114169413000084],\n\t\t\t\t[89.73672367300003, 26.100578511],\n\t\t\t\t[89.74984948700012, 26.08388702400005],\n\t\t\t\t[89.75114139900006, 26.071536357000085],\n\t\t\t\t[89.74871260600008, 26.05903066000009],\n\t\t\t\t[89.75021122300012, 26.041564026000046],\n\t\t\t\t[89.75584395400011, 26.032417297000066],\n\t\t\t\t[89.77641117400003, 26.008232727000077],\n\t\t\t\t[89.78395593200008, 25.99510691300013],\n\t\t\t\t[89.78943363500014, 25.9879755650001],\n\t\t\t\t[89.79553145400013, 25.985960185000053],\n\t\t\t\t[89.80204268400007, 25.98864736000006],\n\t\t\t\t[89.80886397300003, 25.99510691300013],\n\t\t\t\t[89.80917403100011, 25.99510691300013],\n\t\t\t\t[89.80932906100008, 25.995210266000058],\n\t\t\t\t[89.81103438300005, 25.99603708900007],\n\t\t\t\t[89.81268802900007, 25.996347148000055],\n\t\t\t\t[89.81413496900007, 25.99614044200011],\n\t\t\t\t[89.8152718500001, 25.99510691300013],\n\t\t\t\t[89.82865604700004, 25.979397278000064],\n\t\t\t\t[89.82560713700008, 25.965703024000035],\n\t\t\t\t[89.81155114700005, 25.955212708000076],\n\t\t\t\t[89.79201745600005, 25.94911488900003],\n\t\t\t\t[89.81072432500014, 25.938779603000015],\n\t\t\t\t[89.82643396000003, 25.937487691000072],\n\t\t\t\t[89.83439213000008, 25.931751608000113],\n\t\t\t\t[89.83005131100009, 25.90798044900005],\n\t\t\t\t[89.7869531660001, 25.839147441000065],\n\t\t\t\t[89.78312911000006, 25.81444610700005],\n\t\t\t\t[89.80152592000013, 25.72468414400005],\n\t\t\t\t[89.82421187300008, 25.674092916000106],\n\t\t\t\t[89.83439213000008, 25.63476715100002],\n\t\t\t\t[89.82509037300014, 25.56448720300004],\n\t\t\t\t[89.82323002100003, 25.489142965000056],\n\t\t\t\t[89.80856794000005, 25.439507112000015],\n\t\t\t\t[89.80069909700012, 25.41286855100013],\n\t\t\t\t[89.79923403500004, 25.402892809000022],\n\t\t\t\t[89.79501469000007, 25.374162903000112],\n\t\t\t\t[89.79852868700004, 25.340056458000035],\n\t\t\t\t[89.80736535600005, 25.304503073],\n\t\t\t\t[89.81904423000009, 25.284969381000067],\n\t\t\t\t[89.83459883600011, 25.282437236000092],\n\t\t\t\t[89.87020389800011, 25.29556305000007],\n\t\t\t\t[89.90813440000011, 25.29690663700002],\n\t\t\t\t[90.13008467700013, 25.211588847000044],\n\t\t\t\t[90.28692264800003, 25.180066223000082],\n\t\t\t\t[90.36464400300014, 25.149990540000104],\n\t\t\t\t[90.39978397700008, 25.149008687000034],\n\t\t\t\t[90.50137984200012, 25.168800761000014],\n\t\t\t\t[90.58333866400005, 25.16203114900007],\n\t\t\t\t[90.62343957500008, 25.171436259000032],\n\t\t\t\t[90.6375989180001, 25.171074524000048],\n\t\t\t\t[90.64896773300012, 25.167818909000047],\n\t\t\t\t[90.67056848100009, 25.158775533],\n\t\t\t\t[90.70767216000013, 25.15298777300002],\n\t\t\t\t[90.71635380000009, 25.153556214000062],\n\t\t\t\t[90.72203820800007, 25.15660512300009],\n\t\t\t\t[90.73268355400006, 25.16688873300008],\n\t\t\t\t[90.73795454900005, 25.16942087900007],\n\t\t\t\t[90.75397424300013, 25.167560527000077],\n\t\t\t\t[90.76689335100014, 25.16053253200006],\n\t\t\t\t[90.77939904800013, 25.151954244000038],\n\t\t\t\t[90.7939718020001, 25.14539133700005],\n\t\t\t\t[90.82198042800007, 25.142290752000108],\n\t\t\t\t[90.93482138600007, 25.156359858000044],\n\t\t\t\t[90.9434200450001, 25.15743194600013],\n\t\t\t\t[90.97514937400013, 25.167818909000047],\n\t\t\t\t[91.13534631400006, 25.191228333000097],\n\t\t\t\t[91.19084680200012, 25.189471334000032],\n\t\t\t\t[91.20314579300009, 25.191331686000026],\n\t\t\t\t[91.22495324700009, 25.201615296000043],\n\t\t\t\t[91.23570194500013, 25.201925354000096],\n\t\t\t\t[91.28396773300005, 25.178981018000073],\n\t\t\t\t[91.43186568300013, 25.137949931000023],\n\t\t\t\t[91.47103641800004, 25.133919170000027],\n\t\t\t\t[91.4807515870001, 25.135262757000092],\n\t\t\t\t[91.50090539600006, 25.14115387],\n\t\t\t\t[91.51165409400011, 25.14249745700006],\n\t\t\t\t[91.52343632100008, 25.145184632000095],\n\t\t\t\t[91.54017948400013, 25.157638652000074],\n\t\t\t\t[91.5487577720001, 25.161100973000103],\n\t\t\t\t[91.56612105300007, 25.15996409100002],\n\t\t\t\t[91.57345910700008, 25.152264302000034],\n\t\t\t\t[91.5801770430001, 25.140895488000027],\n\t\t\t\t[91.59619673700007, 25.128906555000086],\n\t\t\t\t[91.61314660700009, 25.12513417600006],\n\t\t\t\t[91.63867476400003, 25.12404897100005],\n\t\t\t\t[91.66203251100006, 25.127201233],\n\t\t\t\t[91.67226444500005, 25.13650299100003],\n\t\t\t\t[91.67743208800005, 25.152626038000037],\n\t\t\t\t[91.68890425700005, 25.15298777300002],\n\t\t\t\t[91.70182336400006, 25.14714833600003],\n\t\t\t\t[91.7107117110001, 25.14466786800007],\n\t\t\t\t[91.71773970600009, 25.149835511000063],\n\t\t\t\t[91.72373417200004, 25.161927796000057],\n\t\t\t\t[91.73014204900005, 25.167457174000063],\n\t\t\t\t[91.74533492100011, 25.169369202000055],\n\t\t\t\t[91.79370406100003, 25.16533844000007],\n\t\t\t\t[91.90057092300009, 25.177585754000106],\n\t\t\t\t[91.95627811700012, 25.169782613000066],\n\t\t\t\t[91.97508833800003, 25.175363668],\n\t\t\t\t[92.00175337700006, 25.18296010400006],\n\t\t\t\t[92.03399947100013, 25.181668193000107],\n\t\t\t\t[92.06603886000005, 25.174536845000077],\n\t\t\t\t[92.09291060400011, 25.164718323],\n\t\t\t\t[92.1004553630001, 25.159085592000068],\n\t\t\t\t[92.11037723800007, 25.144874573000024],\n\t\t\t\t[92.11616499900003, 25.139448548000033],\n\t\t\t\t[92.12412316900003, 25.136968079000056],\n\t\t\t\t[92.13859257000013, 25.136399638000015],\n\t\t\t\t[92.14551721200013, 25.13169708200003],\n\t\t\t\t[92.15099491400008, 25.129733379000086],\n\t\t\t\t[92.16474084500004, 25.133557434000053],\n\t\t\t\t[92.17269901600008, 25.131955465000104],\n\t\t\t\t[92.17921024600008, 25.126684469000068],\n\t\t\t\t[92.19409305900012, 25.109166159000026],\n\t\t\t\t[92.20804569500012, 25.098107401],\n\t\t\t\t[92.22013798000012, 25.090381775000097],\n\t\t\t\t[92.2336772060001, 25.08495575000005],\n\t\t\t\t[92.25155725100012, 25.080795797000107],\n\t\t\t\t[92.30354374200004, 25.07428456600003],\n\t\t\t\t[92.31212203000007, 25.0686001590001],\n\t\t\t\t[92.32814172400003, 25.048007101000096],\n\t\t\t\t[92.35625370300005, 25.037000021],\n\t\t\t\t[92.38105839100012, 25.02343495700002],\n\t\t\t\t[92.38493703500006, 25.004773236000048],\n\t\t\t\t[92.38687592400004, 24.9954444560001],\n\t\t\t\t[92.38692635100006, 24.99520183],\n\t\t\t\t[92.38694950400003, 24.99509043400012],\n\t\t\t\t[92.39470096900004, 24.993230082000096],\n\t\t\t\t[92.41186000600004, 24.987527227000058],\n\t\t\t\t[92.41213950000014, 24.987434336],\n\t\t\t\t[92.4122709560001, 24.987390646000037],\n\t\t\t\t[92.41246032100014, 24.98436081700008],\n\t\t\t\t[92.41247766200007, 24.98408335400002],\n\t\t\t\t[92.44444627300004, 24.962427197000082],\n\t\t\t\t[92.44451704900007, 24.96237925200002],\n\t\t\t\t[92.45376877000012, 24.9582310630001],\n\t\t\t\t[92.45402551300003, 24.95811594700008],\n\t\t\t\t[92.45782812800007, 24.953557685000035],\n\t\t\t\t[92.45805627500005, 24.953284201000045],\n\t\t\t\t[92.45002848600006, 24.94663618700004],\n\t\t\t\t[92.4497880460001, 24.946437073000098],\n\t\t\t\t[92.4742723330001, 24.936715371000062],\n\t\t\t\t[92.4743860270001, 24.93667022800004],\n\t\t\t\t[92.48379113800013, 24.92822113000004],\n\t\t\t\t[92.49126714800008, 24.912424218000055],\n\t\t\t\t[92.49133589700006, 24.91227895100012],\n\t\t\t\t[92.49453983600006, 24.894863993000072],\n\t\t\t\t[92.49154260200004, 24.883727722000046],\n\t\t\t\t[92.47769331900008, 24.863909810000067],\n\t\t\t\t[92.44203658000009, 24.855409037000058],\n\t\t\t\t[92.38074833200005, 24.836702169000077],\n\t\t\t\t[92.37092980900007, 24.837916565000015],\n\t\t\t\t[92.36359175600006, 24.84101715100006],\n\t\t\t\t[92.36350740900014, 24.841120014000026],\n\t\t\t\t[92.35935428900012, 24.846184794000052],\n\t\t\t\t[92.35932057700006, 24.84642836600004],\n\t\t\t\t[92.35832076000014, 24.853652039000096],\n\t\t\t\t[92.35814605200005, 24.853748899000024],\n\t\t\t\t[92.29041792900011, 24.891298320000104],\n\t\t\t\t[92.29024450000003, 24.891351286000045],\n\t\t\t\t[92.2521773680001, 24.902977194000087],\n\t\t\t\t[92.2230318610001, 24.89137583400013],\n\t\t\t\t[92.21765751100003, 24.874580994000084],\n\t\t\t\t[92.22175905800003, 24.857046883000052],\n\t\t\t\t[92.22179162600014, 24.856907654000068],\n\t\t\t\t[92.23492786100007, 24.82499071000008],\n\t\t\t\t[92.23502079300005, 24.824764914000028],\n\t\t\t\t[92.23688114400005, 24.808590190000032],\n\t\t\t\t[92.23646773300004, 24.793035584],\n\t\t\t\t[92.23378055900008, 24.777532654000098],\n\t\t\t\t[92.18293094900008, 24.647256368000015],\n\t\t\t\t[92.1734224860001, 24.60839569200006],\n\t\t\t\t[92.16887496000004, 24.574315084000077],\n\t\t\t\t[92.16360396300013, 24.55919972800008],\n\t\t\t\t[92.1531653240001, 24.54454945900001],\n\t\t\t\t[92.14997986200007, 24.54218295400004],\n\t\t\t\t[92.13859257000013, 24.533723246000065],\n\t\t\t\t[92.12319299300003, 24.525377503000087],\n\t\t\t\t[92.11089400300011, 24.514292908000087],\n\t\t\t\t[92.10593306500004, 24.495250143000092],\n\t\t\t\t[92.11120406100008, 24.43429779100005],\n\t\t\t\t[92.10758671100012, 24.40597910600006],\n\t\t\t\t[92.08825972500006, 24.38163950700003],\n\t\t\t\t[92.06273156800012, 24.37102],\n\t\t\t\t[92.03337935400003, 24.368849590000067],\n\t\t\t\t[91.9499735920001, 24.37538665800004],\n\t\t\t\t[91.94883671100007, 24.363526917000016],\n\t\t\t\t[91.97136763500009, 24.329678853000118],\n\t\t\t\t[91.97219445900004, 24.316062114000104],\n\t\t\t\t[91.95307417800012, 24.322986755],\n\t\t\t\t[91.93095666500011, 24.336965231000093],\n\t\t\t\t[91.92186161300003, 24.34450999000005],\n\t\t\t\t[91.89984745300006, 24.338050435000085],\n\t\t\t\t[91.89643680900014, 24.32011871400003],\n\t\t\t\t[91.90687544800005, 24.28035369900003],\n\t\t\t\t[91.90594527200011, 24.260639140000066],\n\t\t\t\t[91.88434452300004, 24.17555389500005],\n\t\t\t\t[91.87710982300007, 24.158035584000075],\n\t\t\t\t[91.86450077300009, 24.15059417700006],\n\t\t\t\t[91.84424361200007, 24.155322571000042],\n\t\t\t\t[91.81375451700006, 24.183124492],\n\t\t\t\t[91.81137740100013, 24.192038676000024],\n\t\t\t\t[91.8097237550001, 24.214543763000037],\n\t\t\t\t[91.80703658100003, 24.221132507000036],\n\t\t\t\t[91.79659794100013, 24.221597595000063],\n\t\t\t\t[91.73293257600011, 24.234284159000097],\n\t\t\t\t[91.72301070200012, 24.22097747800008],\n\t\t\t\t[91.72580122900007, 24.202063904000042],\n\t\t\t\t[91.73200240000006, 24.181677551000107],\n\t\t\t\t[91.73262251800003, 24.164314270000077],\n\t\t\t\t[91.72115035100012, 24.148992208000024],\n\t\t\t\t[91.70368371600006, 24.14294606500009],\n\t\t\t\t[91.68415002500006, 24.145478211000082],\n\t\t\t\t[91.66616662600006, 24.155916850000025],\n\t\t\t\t[91.65717492700003, 24.17136810400011],\n\t\t\t\t[91.63950158700004, 24.211701559000076],\n\t\t\t\t[91.62906294800007, 24.21531890900006],\n\t\t\t\t[91.62451542100007, 24.203459168000037],\n\t\t\t\t[91.61376672300014, 24.140103862],\n\t\t\t\t[91.60601525900012, 24.11886484800003],\n\t\t\t\t[91.59650679500004, 24.104989726000056],\n\t\t\t\t[91.58183068900007, 24.096101380000064],\n\t\t\t\t[91.55867964700008, 24.089667663000014],\n\t\t\t\t[91.51754520700007, 24.085197652000076],\n\t\t\t\t[91.48044152900013, 24.088014018000067],\n\t\t\t\t[91.40458052600007, 24.103129374000062],\n\t\t\t\t[91.36303267500011, 24.099847921000062],\n\t\t\t\t[91.35083703600009, 24.074242249000022],\n\t\t\t\t[91.34928674300005, 24.036053366000132],\n\t\t\t\t[91.3390548100001, 23.995228984000036],\n\t\t\t\t[91.32706587800004, 23.987865092000035],\n\t\t\t\t[91.31621382700007, 23.989467062000088],\n\t\t\t\t[91.30843257700013, 23.992501035000103],\n\t\t\t\t[91.30494836400004, 23.993859558000068],\n\t\t\t\t[91.29161584500008, 23.994815573000025],\n\t\t\t\t[91.27414921100006, 23.988226827000048],\n\t\t\t\t[91.26092004400004, 23.97727142400008],\n\t\t\t\t[91.25037805200003, 23.96404225700006],\n\t\t\t\t[91.21627160700012, 23.90838673900005],\n\t\t\t\t[91.21193078600004, 23.89445994100008],\n\t\t\t\t[91.2127576090001, 23.880739848000033],\n\t\t\t\t[91.22402307100003, 23.857485453000024],\n\t\t\t\t[91.22815718600009, 23.844979757000104],\n\t\t\t\t[91.2252633060001, 23.82614369800011],\n\t\t\t\t[91.20521285000012, 23.77157338500008],\n\t\t\t\t[91.19498091600013, 23.755166118000105],\n\t\t\t\t[91.17658410700005, 23.746536154000083],\n\t\t\t\t[91.15756717900007, 23.744985861000046],\n\t\t\t\t[91.14175419100008, 23.73989573200008],\n\t\t\t\t[91.13234908000004, 23.720646261000056],\n\t\t\t\t[91.13658654800008, 23.698890483000028],\n\t\t\t\t[91.15239953700006, 23.691009827000087],\n\t\t\t\t[91.16893599500008, 23.685377096000067],\n\t\t\t\t[91.1752405200001, 23.67031341600007],\n\t\t\t\t[91.1664555260001, 23.654087016000048],\n\t\t\t\t[91.15229618400014, 23.655094707000032],\n\t\t\t\t[91.13968713400004, 23.65357025100012],\n\t\t\t\t[91.13627648900012, 23.629514872000087],\n\t\t\t\t[91.14082401500013, 23.61209991500006],\n\t\t\t\t[91.16986617000003, 23.561973776000045],\n\t\t\t\t[91.17751428300011, 23.544274597000125],\n\t\t\t\t[91.1858858650001, 23.511563416000044],\n\t\t\t\t[91.19508426900006, 23.495181986000077],\n\t\t\t\t[91.20335249900012, 23.487921448000108],\n\t\t\t\t[91.22081913300008, 23.47789622000009],\n\t\t\t\t[91.22733036300014, 23.4687753300001],\n\t\t\t\t[91.22970747900007, 23.461178894000042],\n\t\t\t\t[91.23446171100005, 23.436270854000085],\n\t\t\t\t[91.24789758300005, 23.393766989000127],\n\t\t\t\t[91.2581295170001, 23.37363901800005],\n\t\t\t\t[91.27094527200006, 23.3645956430001],\n\t\t\t\t[91.28396773300005, 23.36144338000004],\n\t\t\t\t[91.28727502500004, 23.35555226700005],\n\t\t\t\t[91.28293420400007, 23.34764577300008],\n\t\t\t\t[91.27290897700004, 23.338499044000017],\n\t\t\t\t[91.26577762900007, 23.329352315000037],\n\t\t\t\t[91.26753462700009, 23.321549174],\n\t\t\t\t[91.27290897700004, 23.313487651000017],\n\t\t\t\t[91.27724979600009, 23.303255717000027],\n\t\t\t\t[91.30050419200012, 23.14230946900001],\n\t\t\t\t[91.31352665200006, 23.101045838000076],\n\t\t\t\t[91.33740116400003, 23.071073507000037],\n\t\t\t\t[91.37088749200007, 23.06277944],\n\t\t\t\t[91.37460819500006, 23.095723165000052],\n\t\t\t\t[91.35590132700008, 23.17964569100006],\n\t\t\t\t[91.35569462100011, 23.224139099000027],\n\t\t\t\t[91.36096561700003, 23.247522685],\n\t\t\t\t[91.37212772600009, 23.261888733000077],\n\t\t\t\t[91.39434859200003, 23.2626638790001],\n\t\t\t\t[91.41357222500005, 23.248633728000087],\n\t\t\t\t[91.42814498000013, 23.229513449000095],\n\t\t\t\t[91.43651656100008, 23.214863180000023],\n\t\t\t\t[91.43620650200012, 23.215715841000062],\n\t\t\t\t[91.43961714700004, 23.22264048200013],\n\t\t\t\t[91.43992720500012, 23.223518983000062],\n\t\t\t\t[91.44643843600005, 23.215534973],\n\t\t\t\t[91.44674849500007, 23.20879119900006],\n\t\t\t\t[91.44540490800011, 23.203029277],\n\t\t\t\t[91.44643843600005, 23.1978874710001],\n\t\t\t\t[91.46121789600011, 23.184425761000043],\n\t\t\t\t[91.46359501200004, 23.184115702000057],\n\t\t\t\t[91.47041630100011, 23.153290711000082],\n\t\t\t\t[91.47506717900006, 23.14308461500012],\n\t\t\t\t[91.49811486900012, 23.069962464000056],\n\t\t\t\t[91.50328251200011, 23.0444084680001],\n\t\t\t\t[91.50607303900006, 23.041178691000127],\n\t\t\t\t[91.51558150200009, 23.03880157500008],\n\t\t\t\t[91.51816532400005, 23.03508087200008],\n\t\t\t\t[91.51940555800007, 23.005625305000066],\n\t\t\t\t[91.52364302600006, 22.995212504000037],\n\t\t\t\t[91.53656213400006, 22.981854146],\n\t\t\t\t[91.54979130000004, 22.977229106000053],\n\t\t\t\t[91.5631238200001, 22.974981181000132],\n\t\t\t\t[91.57676639900006, 22.96880584800006],\n\t\t\t\t[91.5830709230001, 22.957798767000057],\n\t\t\t\t[91.58296757000005, 22.94790273100007],\n\t\t\t\t[91.58606815600012, 22.94446624800004],\n\t\t\t\t[91.60239790900005, 22.95296702100005],\n\t\t\t\t[91.60828902200006, 22.96033091300005],\n\t\t\t\t[91.61200972500006, 22.969839376000053],\n\t\t\t\t[91.61666060400012, 22.978055929000064],\n\t\t\t\t[91.62575565600008, 22.98154408800012],\n\t\t\t\t[91.63278365100012, 22.98030385300008],\n\t\t\t\t[91.63991499800005, 22.978004253000066],\n\t\t\t\t[91.64694299300004, 22.97658315000008],\n\t\t\t\t[91.65407434100007, 22.978055929000064],\n\t\t\t\t[91.66761356600006, 22.982629293000016],\n\t\t\t\t[91.69469201700014, 22.98813283300011],\n\t\t\t\t[91.70699100800005, 22.995367534000067],\n\t\t\t\t[91.7144324140001, 23.00311899800009],\n\t\t\t\t[91.73127893100008, 23.017330018000038],\n\t\t\t\t[91.73830692600006, 23.02466807100005],\n\t\t\t\t[91.75505009000011, 23.048232524000056],\n\t\t\t\t[91.75629032400008, 23.052159933000027],\n\t\t\t\t[91.75556685400005, 23.05683665000008],\n\t\t\t\t[91.75598026500006, 23.061539206000063],\n\t\t\t\t[91.76094120300013, 23.065492453000033],\n\t\t\t\t[91.76424849400013, 23.065647481000084],\n\t\t\t\t[91.77375695800004, 23.06489817300006],\n\t\t\t\t[91.77623742700007, 23.065259909000062],\n\t\t\t\t[91.7913269450001, 23.080375265000086],\n\t\t\t\t[91.79556441200003, 23.08949615500005],\n\t\t\t\t[91.79194706200013, 23.101149190000015],\n\t\t\t\t[91.77902795400013, 23.131767476000036],\n\t\t\t\t[91.76393843600005, 23.200626323000037],\n\t\t\t\t[91.74915897700004, 23.232407329000083],\n\t\t\t\t[91.74368127400004, 23.27232737300004],\n\t\t\t\t[91.7625948490001, 23.321549174],\n\t\t\t\t[91.79163700400005, 23.368342183000024],\n\t\t\t\t[91.81768192600003, 23.40092417400008],\n\t\t\t\t[91.83380497300004, 23.413894959000103],\n\t\t\t\t[91.88909875500013, 23.43593495800009],\n\t\t\t\t[91.9051184490001, 23.446631979000088],\n\t\t\t\t[91.91814091000003, 23.459938660000105],\n\t\t\t\t[91.94077518800009, 23.495181986000077],\n\t\t\t\t[91.94232548000008, 23.534430237000052],\n\t\t\t\t[91.91597050000007, 23.650159607000077],\n\t\t\t\t[91.91442020700003, 23.68832265300007],\n\t\t\t\t[91.91648726400007, 23.7098717250001],\n\t\t\t\t[91.9226884360001, 23.72297170000006],\n\t\t\t\t[91.93664107300009, 23.723540141000043],\n\t\t\t\t[91.94914677000008, 23.709768372000084],\n\t\t\t\t[91.96165246600009, 23.691139018000015],\n\t\t\t\t[92.00351037700005, 23.647420757000035],\n\t\t\t\t[92.01901330600003, 23.640056865000034],\n\t\t\t\t[92.04237105300007, 23.64556040500004],\n\t\t\t\t[92.05963098100005, 23.659487203000126],\n\t\t\t\t[92.09218713400003, 23.701345114],\n\t\t\t\t[92.10841353400014, 23.718243307000094],\n\t\t\t\t[92.15078820800005, 23.731653341000126],\n\t\t\t\t[92.17063195800006, 23.70364471400002],\n\t\t\t\t[92.18076053900012, 23.665378317000105],\n\t\t\t\t[92.19429976400005, 23.648144226000042],\n\t\t\t\t[92.20938928200007, 23.661605937],\n\t\t\t\t[92.22210168500004, 23.70777882900005],\n\t\t\t\t[92.23874149600005, 23.7168480430001],\n\t\t\t\t[92.25930871600013, 23.706486918000095],\n\t\t\t\t[92.25973660500011, 23.702640572000078],\n\t\t\t\t[92.26168583200007, 23.68511871300008],\n\t\t\t\t[92.25000695800003, 23.642614848000036],\n\t\t\t\t[92.25279748500009, 23.609309388],\n\t\t\t\t[92.29103804500005, 23.49528534000011],\n\t\t\t\t[92.29682580600013, 23.446580302000072],\n\t\t\t\t[92.30147668500007, 23.431800842000072],\n\t\t\t\t[92.30674768100005, 23.423868510000105],\n\t\t\t\t[92.31977014200004, 23.412163798000037],\n\t\t\t\t[92.32535119700009, 23.403507995000083],\n\t\t\t\t[92.32690149000013, 23.39601491300003],\n\t\t\t\t[92.32535119700009, 23.382165629000085],\n\t\t\t\t[92.32669478400004, 23.375266825],\n\t\t\t\t[92.33165572100012, 23.368652243],\n\t\t\t\t[92.34488488800008, 23.359117940000104],\n\t\t\t\t[92.34860559100008, 23.354105326000038],\n\t\t\t\t[92.34953576700013, 23.344958598000076],\n\t\t\t\t[92.34674523900009, 23.325295715000024],\n\t\t\t\t[92.3470552980001, 23.315425517000037],\n\t\t\t\t[92.3522229410001, 23.29883738200003],\n\t\t\t\t[92.35687382000003, 23.289122213],\n\t\t\t\t[92.35749393700013, 23.278941956000025],\n\t\t\t\t[92.35067264900005, 23.26098439500005],\n\t\t\t\t[92.3326892500001, 23.226257833000105],\n\t\t\t\t[92.32855513500004, 23.211194153000022],\n\t\t\t\t[92.3276249590001, 23.171429138000022],\n\t\t\t\t[92.3530497650001, 23.02991322800007],\n\t\t\t\t[92.3522229410001, 22.96033091300005],\n\t\t\t\t[92.35987105300006, 22.92661204000008],\n\t\t\t\t[92.37868127500008, 22.900437928000073],\n\t\t\t\t[92.4118575440001, 22.887932231],\n\t\t\t\t[92.42632694500003, 22.871059876000103],\n\t\t\t\t[92.4350085860001, 22.793286846000072],\n\t\t\t\t[92.44203658000009, 22.762926941000032],\n\t\t\t\t[92.45371545400008, 22.74796661400005],\n\t\t\t\t[92.48069055200011, 22.726159159000034],\n\t\t\t\t[92.49154260200004, 22.711069641000037],\n\t\t\t\t[92.49588342300012, 22.695618388000028],\n\t\t\t\t[92.50291141800011, 22.618620504000106],\n\t\t\t\t[92.50084436000009, 22.560536194000022],\n\t\t\t\t[92.50456506400008, 22.54379303000009],\n\t\t\t\t[92.51738081900004, 22.512580465],\n\t\t\t\t[92.51893111200008, 22.49537221300004],\n\t\t\t\t[92.57701542200004, 22.168673808000065],\n\t\t\t\t[92.57556848200005, 22.143300680000053],\n\t\t\t\t[92.56419966700008, 22.1383397420001],\n\t\t\t\t[92.54931685400004, 22.138494772000072],\n\t\t\t\t[92.5373279210001, 22.128624573000067],\n\t\t\t\t[92.55996219900004, 22.061341859],\n\t\t\t\t[92.57308801300007, 21.995402731000084],\n\t\t\t\t[92.57515507000005, 21.98656606100009],\n\t\t\t\t[92.57587854000013, 21.977574362000027]\n\t\t\t]\n\t\t]\n\t}\n}\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json"},{"path":"remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json","content":"[\n\t[84.144, 29.565],\n\t[84.171, 29.577],\n\t[84.22500000000001, 29.559],\n\t[84.246, 29.541],\n\t[84.297, 29.544],\n\t[84.321, 29.532],\n\t[84.411, 29.544],\n\t[84.426, 29.529],\n\t[84.45, 29.535],\n\t[84.468, 29.523],\n\t[84.492, 29.523],\n\t[84.531, 29.490000000000002],\n\t[84.507, 29.466],\n\t[84.501, 29.445],\n\t[84.513, 29.385],\n\t[84.495, 29.379],\n\t[84.483, 29.361],\n\t[84.486, 29.34],\n\t[84.519, 29.316],\n\t[84.51, 29.292],\n\t[84.522, 29.286],\n\t[84.525, 29.265],\n\t[84.57600000000001, 29.253],\n\t[84.58800000000001, 29.259],\n\t[84.60300000000001, 29.247],\n\t[84.615, 29.265],\n\t[84.63, 29.268],\n\t[84.624, 29.283],\n\t[84.651, 29.286],\n\t[84.669, 29.259],\n\t[84.732, 29.25],\n\t[84.741, 29.235],\n\t[84.771, 29.25],\n\t[84.777, 29.241],\n\t[84.843, 29.223],\n\t[84.864, 29.232],\n\t[84.879, 29.202],\n\t[84.9, 29.199],\n\t[84.909, 29.181],\n\t[84.933, 29.184],\n\t[84.96900000000001, 29.163],\n\t[85.023, 29.187],\n\t[85.071, 29.259],\n\t[85.122, 29.274],\n\t[85.167, 29.322],\n\t[85.185, 29.310000000000002],\n\t[85.26, 29.319],\n\t[85.284, 29.301000000000002],\n\t[85.34400000000001, 29.289],\n\t[85.35600000000001, 29.265],\n\t[85.413, 29.262],\n\t[85.431, 29.271],\n\t[85.449, 29.247],\n\t[85.464, 29.244],\n\t[85.521, 29.25],\n\t[85.551, 29.265],\n\t[85.611, 29.235],\n\t[85.617, 29.193],\n\t[85.662, 29.172],\n\t[85.686, 29.172],\n\t[85.69500000000001, 29.184],\n\t[85.71600000000001, 29.172],\n\t[85.72800000000001, 29.187],\n\t[85.764, 29.181],\n\t[85.761, 29.193],\n\t[85.776, 29.202],\n\t[85.788, 29.196],\n\t[85.797, 29.22],\n\t[85.809, 29.211000000000002],\n\t[85.848, 29.211000000000002],\n\t[85.863, 29.193],\n\t[85.881, 29.193],\n\t[85.917, 29.172],\n\t[85.968, 29.175],\n\t[86.004, 29.163],\n\t[86.09400000000001, 29.175],\n\t[86.10000000000001, 29.166],\n\t[86.133, 29.172],\n\t[86.148, 29.166],\n\t[86.193, 29.178],\n\t[86.223, 29.202],\n\t[86.268, 29.193],\n\t[86.295, 29.208000000000002],\n\t[86.34, 29.205000000000002],\n\t[86.412, 29.217000000000002],\n\t[86.427, 29.211000000000002],\n\t[86.43, 29.199],\n\t[86.47800000000001, 29.196],\n\t[86.496, 29.22],\n\t[86.514, 29.211000000000002],\n\t[86.52, 29.235],\n\t[86.529, 29.238],\n\t[86.535, 29.217000000000002],\n\t[86.559, 29.196],\n\t[86.607, 29.202],\n\t[86.616, 29.184],\n\t[86.658, 29.193],\n\t[86.67, 29.205000000000002],\n\t[86.682, 29.199],\n\t[86.7, 29.208000000000002],\n\t[86.736, 29.205000000000002],\n\t[86.778, 29.187],\n\t[86.805, 29.196],\n\t[86.82300000000001, 29.184],\n\t[86.84100000000001, 29.19],\n\t[86.901, 29.181],\n\t[86.949, 29.163],\n\t[87.027, 29.172],\n\t[87.039, 29.148],\n\t[87.063, 29.136],\n\t[87.084, 29.142],\n\t[87.12, 29.175],\n\t[87.162, 29.142],\n\t[87.21000000000001, 29.142],\n\t[87.237, 29.157],\n\t[87.249, 29.136],\n\t[87.297, 29.127],\n\t[87.303, 29.115000000000002],\n\t[87.366, 29.121000000000002],\n\t[87.459, 29.097],\n\t[87.486, 29.115000000000002],\n\t[87.546, 29.109],\n\t[87.56700000000001, 29.121000000000002],\n\t[87.59400000000001, 29.121000000000002],\n\t[87.60600000000001, 29.133],\n\t[87.654, 29.139],\n\t[87.666, 29.13],\n\t[87.684, 29.133],\n\t[87.687, 29.157],\n\t[87.669, 29.181],\n\t[87.675, 29.205000000000002],\n\t[87.705, 29.217000000000002],\n\t[87.714, 29.235],\n\t[87.732, 29.238],\n\t[87.732, 29.253],\n\t[87.756, 29.283],\n\t[87.753, 29.301000000000002],\n\t[87.789, 29.304000000000002],\n\t[87.795, 29.328],\n\t[87.81, 29.337],\n\t[87.849, 29.331],\n\t[87.87, 29.349],\n\t[87.906, 29.343],\n\t[87.924, 29.349],\n\t[87.97800000000001, 29.388],\n\t[87.996, 29.376],\n\t[88.014, 29.379],\n\t[88.017, 29.37],\n\t[88.125, 29.367],\n\t[88.137, 29.337],\n\t[88.161, 29.331],\n\t[88.176, 29.337],\n\t[88.188, 29.325],\n\t[88.2, 29.328],\n\t[88.221, 29.367],\n\t[88.245, 29.367],\n\t[88.287, 29.349],\n\t[88.299, 29.358],\n\t[88.365, 29.316],\n\t[88.41, 29.322],\n\t[88.422, 29.316],\n\t[88.443, 29.325],\n\t[88.458, 29.349],\n\t[88.503, 29.361],\n\t[88.536, 29.334],\n\t[88.563, 29.328],\n\t[88.596, 29.349],\n\t[88.629, 29.346],\n\t[88.641, 29.334],\n\t[88.671, 29.34],\n\t[88.71000000000001, 29.331],\n\t[88.72800000000001, 29.343],\n\t[88.791, 29.337],\n\t[88.818, 29.352],\n\t[88.86, 29.319],\n\t[88.884, 29.334],\n\t[88.908, 29.316],\n\t[88.923, 29.331],\n\t[88.962, 29.328],\n\t[88.971, 29.349],\n\t[89.007, 29.361],\n\t[89.019, 29.352],\n\t[89.034, 29.358],\n\t[89.08500000000001, 29.322],\n\t[89.136, 29.316],\n\t[89.16, 29.343],\n\t[89.181, 29.337],\n\t[89.211, 29.349],\n\t[89.235, 29.379],\n\t[89.253, 29.373],\n\t[89.265, 29.385],\n\t[89.289, 29.385],\n\t[89.307, 29.376],\n\t[89.349, 29.379],\n\t[89.397, 29.358],\n\t[89.45100000000001, 29.355],\n\t[89.46000000000001, 29.334],\n\t[89.58, 29.358],\n\t[89.595, 29.346],\n\t[89.61, 29.355],\n\t[89.631, 29.346],\n\t[89.661, 29.349],\n\t[89.679, 29.364],\n\t[89.757, 29.295],\n\t[89.787, 29.292],\n\t[89.808, 29.310000000000002],\n\t[89.85300000000001, 29.322],\n\t[89.931, 29.319],\n\t[89.985, 29.343],\n\t[90.015, 29.337],\n\t[90.072, 29.352],\n\t[90.156, 29.355],\n\t[90.168, 29.346],\n\t[90.20100000000001, 29.349],\n\t[90.22500000000001, 29.331],\n\t[90.273, 29.337],\n\t[90.276, 29.328],\n\t[90.342, 29.313],\n\t[90.378, 29.295],\n\t[90.435, 29.241],\n\t[90.477, 29.256],\n\t[90.492, 29.25],\n\t[90.51, 29.256],\n\t[90.522, 29.247],\n\t[90.54, 29.262],\n\t[90.621, 29.277],\n\t[90.642, 29.301000000000002],\n\t[90.663, 29.298000000000002],\n\t[90.681, 29.313],\n\t[90.684, 29.328],\n\t[90.705, 29.34],\n\t[90.729, 29.328],\n\t[90.747, 29.337],\n\t[90.765, 29.328],\n\t[90.768, 29.310000000000002],\n\t[90.756, 29.295],\n\t[90.771, 29.277],\n\t[90.855, 29.283],\n\t[90.897, 29.319],\n\t[90.933, 29.310000000000002],\n\t[90.95100000000001, 29.295],\n\t[90.993, 29.322],\n\t[91.035, 29.295],\n\t[91.065, 29.316],\n\t[91.116, 29.325],\n\t[91.131, 29.313],\n\t[91.173, 29.325],\n\t[91.194, 29.286],\n\t[91.233, 29.274],\n\t[91.296, 29.289],\n\t[91.308, 29.277],\n\t[91.34700000000001, 29.28],\n\t[91.374, 29.292],\n\t[91.395, 29.28],\n\t[91.449, 29.286],\n\t[91.479, 29.268],\n\t[91.512, 29.28],\n\t[91.533, 29.271],\n\t[91.554, 29.289],\n\t[91.587, 29.292],\n\t[91.602, 29.271],\n\t[91.62, 29.265],\n\t[91.659, 29.271],\n\t[91.674, 29.259],\n\t[91.71000000000001, 29.268],\n\t[91.74, 29.259],\n\t[91.782, 29.274],\n\t[91.839, 29.268],\n\t[91.869, 29.283],\n\t[91.98, 29.262],\n\t[92.007, 29.232],\n\t[92.07000000000001, 29.289],\n\t[92.115, 29.283],\n\t[92.154, 29.289],\n\t[92.196, 29.244],\n\t[92.22, 29.253],\n\t[92.235, 29.244],\n\t[92.277, 29.244],\n\t[92.295, 29.229],\n\t[92.319, 29.226],\n\t[92.376, 29.226],\n\t[92.397, 29.241],\n\t[92.406, 29.262],\n\t[92.433, 29.25],\n\t[92.46600000000001, 29.253],\n\t[92.529, 29.172],\n\t[92.529, 29.133],\n\t[92.553, 29.148],\n\t[92.598, 29.145],\n\t[92.589, 29.121000000000002],\n\t[92.61, 29.097],\n\t[92.619, 29.115000000000002],\n\t[92.658, 29.121000000000002],\n\t[92.685, 29.139],\n\t[92.697, 29.127],\n\t[92.676, 29.112000000000002],\n\t[92.679, 29.103],\n\t[92.709, 29.109],\n\t[92.739, 29.067],\n\t[92.772, 29.091],\n\t[92.775, 29.073],\n\t[92.796, 29.082],\n\t[92.808, 29.061],\n\t[92.82000000000001, 29.067],\n\t[92.82300000000001, 29.082],\n\t[92.82900000000001, 29.076],\n\t[92.85300000000001, 29.082],\n\t[92.85600000000001, 29.073],\n\t[92.88, 29.073],\n\t[92.904, 29.058],\n\t[92.934, 29.067],\n\t[92.952, 29.049],\n\t[92.973, 29.061],\n\t[92.988, 29.043],\n\t[92.997, 29.049],\n\t[93.066, 29.043],\n\t[93.081, 29.094],\n\t[93.117, 29.115000000000002],\n\t[93.123, 29.136],\n\t[93.138, 29.139],\n\t[93.15, 29.127],\n\t[93.147, 29.094],\n\t[93.165, 29.064],\n\t[93.165, 29.043],\n\t[93.153, 29.037],\n\t[93.153, 29.025000000000002],\n\t[93.162, 29.016000000000002],\n\t[93.21300000000001, 29.025000000000002],\n\t[93.22800000000001, 29.019000000000002],\n\t[93.23100000000001, 29.001],\n\t[93.261, 28.992],\n\t[93.285, 29.001],\n\t[93.312, 28.998],\n\t[93.315, 29.016000000000002],\n\t[93.348, 29.046],\n\t[93.375, 29.052],\n\t[93.393, 29.094],\n\t[93.429, 29.109],\n\t[93.447, 29.106],\n\t[93.438, 29.13],\n\t[93.48, 29.175],\n\t[93.492, 29.163],\n\t[93.54, 29.178],\n\t[93.57000000000001, 29.166],\n\t[93.627, 29.172],\n\t[93.63, 29.151],\n\t[93.645, 29.145],\n\t[93.675, 29.151],\n\t[93.681, 29.163],\n\t[93.699, 29.16],\n\t[93.702, 29.142],\n\t[93.735, 29.127],\n\t[93.75, 29.136],\n\t[93.75, 29.148],\n\t[93.78, 29.154],\n\t[93.789, 29.124000000000002],\n\t[93.825, 29.118000000000002],\n\t[93.834, 29.124000000000002],\n\t[93.831, 29.142],\n\t[93.894, 29.13],\n\t[93.912, 29.145],\n\t[93.903, 29.166],\n\t[93.909, 29.178],\n\t[93.94500000000001, 29.184],\n\t[93.95400000000001, 29.196],\n\t[94.017, 29.193],\n\t[94.035, 29.205000000000002],\n\t[94.176, 29.196],\n\t[94.251, 29.262],\n\t[94.305, 29.271],\n\t[94.302, 29.292],\n\t[94.33200000000001, 29.316],\n\t[94.35000000000001, 29.316],\n\t[94.389, 29.337],\n\t[94.401, 29.361],\n\t[94.419, 29.37],\n\t[94.434, 29.406000000000002],\n\t[94.542, 29.448],\n\t[94.581, 29.481],\n\t[94.656, 29.490000000000002],\n\t[94.70700000000001, 29.463],\n\t[94.818, 29.493000000000002],\n\t[94.875, 29.541],\n\t[94.923, 29.61],\n\t[94.926, 29.622],\n\t[94.887, 29.634],\n\t[94.917, 29.67],\n\t[94.893, 29.697],\n\t[94.905, 29.715],\n\t[94.956, 29.757],\n\t[95.124, 29.763],\n\t[95.124, 29.781000000000002],\n\t[95.09100000000001, 29.814],\n\t[95.11200000000001, 29.868000000000002],\n\t[95.13, 29.88],\n\t[95.175, 29.895],\n\t[95.196, 29.892],\n\t[95.223, 29.868000000000002],\n\t[95.286, 29.868000000000002],\n\t[95.304, 29.856],\n\t[95.307, 29.838],\n\t[95.283, 29.82],\n\t[95.289, 29.811],\n\t[95.385, 29.772000000000002],\n\t[95.379, 29.718],\n\t[95.397, 29.688000000000002],\n\t[95.388, 29.595],\n\t[95.403, 29.562],\n\t[95.427, 29.538],\n\t[95.43900000000001, 29.478],\n\t[95.43, 29.451],\n\t[95.313, 29.331],\n\t[95.256, 29.289],\n\t[95.202, 29.28],\n\t[95.04, 29.175],\n\t[95.001, 29.169],\n\t[95.004, 29.139],\n\t[94.908, 29.052],\n\t[94.902, 29.016000000000002],\n\t[94.869, 28.998],\n\t[94.839, 28.956],\n\t[94.788, 28.935000000000002],\n\t[94.773, 28.854],\n\t[94.794, 28.824],\n\t[94.914, 28.821],\n\t[94.923, 28.812],\n\t[94.911, 28.794],\n\t[94.92, 28.752],\n\t[94.977, 28.713],\n\t[94.983, 28.674],\n\t[94.998, 28.683],\n\t[95.031, 28.617],\n\t[95.09700000000001, 28.539],\n\t[95.10300000000001, 28.506],\n\t[95.09100000000001, 28.455000000000002],\n\t[95.09700000000001, 28.419],\n\t[95.013, 28.326],\n\t[94.992, 28.287],\n\t[94.992, 28.242],\n\t[95.019, 28.215],\n\t[95.031, 28.173000000000002],\n\t[95.06700000000001, 28.155],\n\t[95.145, 28.149],\n\t[95.211, 28.179000000000002],\n\t[95.277, 28.155],\n\t[95.292, 28.116],\n\t[95.316, 28.089000000000002],\n\t[95.355, 28.071],\n\t[95.379, 28.071],\n\t[95.385, 28.059],\n\t[95.382, 27.951],\n\t[95.4, 27.936],\n\t[95.412, 27.882],\n\t[95.379, 27.843],\n\t[95.349, 27.837],\n\t[95.325, 27.810000000000002],\n\t[95.325, 27.78],\n\t[95.298, 27.762],\n\t[95.289, 27.717000000000002],\n\t[95.253, 27.657],\n\t[95.211, 27.666],\n\t[95.151, 27.624000000000002],\n\t[95.139, 27.63],\n\t[95.10300000000001, 27.609],\n\t[94.992, 27.6],\n\t[94.944, 27.57],\n\t[94.917, 27.573],\n\t[94.869, 27.504],\n\t[94.803, 27.495],\n\t[94.803, 27.48],\n\t[94.785, 27.471],\n\t[94.794, 27.456],\n\t[94.767, 27.435000000000002],\n\t[94.767, 27.414],\n\t[94.73100000000001, 27.402],\n\t[94.71900000000001, 27.372],\n\t[94.69800000000001, 27.36],\n\t[94.69800000000001, 27.333000000000002],\n\t[94.683, 27.324],\n\t[94.677, 27.294],\n\t[94.635, 27.291],\n\t[94.629, 27.273],\n\t[94.602, 27.255],\n\t[94.596, 27.231],\n\t[94.584, 27.228],\n\t[94.587, 27.177],\n\t[94.596, 27.162],\n\t[94.584, 27.147000000000002],\n\t[94.566, 27.150000000000002],\n\t[94.554, 27.102],\n\t[94.518, 27.105],\n\t[94.449, 27.060000000000002],\n\t[94.44, 27.018],\n\t[94.407, 26.985],\n\t[94.35900000000001, 26.97],\n\t[94.287, 26.919],\n\t[94.197, 26.925],\n\t[94.164, 26.898],\n\t[94.146, 26.865000000000002],\n\t[94.125, 26.856],\n\t[94.113, 26.868000000000002],\n\t[94.134, 26.907],\n\t[94.113, 26.913],\n\t[94.077, 26.886],\n\t[93.927, 26.832],\n\t[93.864, 26.766000000000002],\n\t[93.753, 26.733],\n\t[93.657, 26.715],\n\t[93.618, 26.724],\n\t[93.56700000000001, 26.751],\n\t[93.441, 26.769000000000002],\n\t[93.411, 26.76],\n\t[93.369, 26.718],\n\t[93.288, 26.742],\n\t[93.249, 26.724],\n\t[93.183, 26.673000000000002],\n\t[93.12, 26.646],\n\t[93.087, 26.655],\n\t[93.018, 26.646],\n\t[92.898, 26.655],\n\t[92.883, 26.652],\n\t[92.874, 26.625],\n\t[92.83500000000001, 26.607],\n\t[92.733, 26.613],\n\t[92.676, 26.601],\n\t[92.658, 26.592000000000002],\n\t[92.616, 26.523],\n\t[92.595, 26.517],\n\t[92.508, 26.517],\n\t[92.43, 26.535],\n\t[92.391, 26.532],\n\t[92.244, 26.472],\n\t[92.229, 26.442],\n\t[92.202, 26.454],\n\t[92.172, 26.442],\n\t[92.124, 26.403000000000002],\n\t[92.06700000000001, 26.373],\n\t[92.07000000000001, 26.325],\n\t[92.058, 26.304000000000002],\n\t[91.971, 26.271],\n\t[91.932, 26.271],\n\t[91.899, 26.241],\n\t[91.878, 26.235],\n\t[91.854, 26.241],\n\t[91.665, 26.166],\n\t[91.608, 26.172],\n\t[91.542, 26.145],\n\t[91.497, 26.139],\n\t[91.377, 26.172],\n\t[91.287, 26.166],\n\t[91.197, 26.202],\n\t[91.134, 26.214000000000002],\n\t[91.062, 26.187],\n\t[90.96300000000001, 26.175],\n\t[90.888, 26.136],\n\t[90.849, 26.13],\n\t[90.807, 26.154],\n\t[90.741, 26.163],\n\t[90.681, 26.19],\n\t[90.58200000000001, 26.205000000000002],\n\t[90.507, 26.229],\n\t[90.474, 26.226],\n\t[90.435, 26.178],\n\t[90.402, 26.16],\n\t[90.345, 26.148],\n\t[90.309, 26.124],\n\t[90.22500000000001, 26.106],\n\t[90.177, 26.076],\n\t[89.955, 26.01],\n\t[89.904, 25.941],\n\t[89.84700000000001, 25.89],\n\t[89.81400000000001, 25.815],\n\t[89.736, 25.692],\n\t[89.724, 25.632],\n\t[89.697, 25.572],\n\t[89.709, 25.482],\n\t[89.697, 25.398],\n\t[89.67, 25.323],\n\t[89.7, 25.266000000000002],\n\t[89.703, 25.242],\n\t[89.685, 25.2],\n\t[89.661, 25.173000000000002],\n\t[89.625, 25.074],\n\t[89.613, 24.96],\n\t[89.613, 24.936],\n\t[89.658, 24.87],\n\t[89.673, 24.792],\n\t[89.706, 24.75],\n\t[89.769, 24.549],\n\t[89.748, 24.372],\n\t[89.754, 24.282],\n\t[89.733, 24.225],\n\t[89.742, 24.201],\n\t[89.739, 24.123],\n\t[89.697, 24.015],\n\t[89.7, 23.958000000000002],\n\t[89.727, 23.883],\n\t[89.787, 23.796],\n\t[89.85600000000001, 23.748],\n\t[89.919, 23.664],\n\t[89.985, 23.643],\n\t[90.144, 23.544],\n\t[90.249, 23.463]\n]\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json"},{"path":"remotion-maps/techniques/maptiler/assets/tokens.ts","content":"// Example tokens only. Replace every visual value with production-local tokens.\nexport const COLORS = {\n\tbg: '#101315',\n\t// Electric water — a near-white icy core with a blue glow and a white-hot draw-head (the \"electricity\"\n\t// travels along the river as it draws on). No dark casing.\n\triver: '#E8F7FF', // bright icy core\n\triverGlow: 'rgba(73,198,255,0.5)', // electric-blue glow\n\triverHead: '#FFFFFF', // white-hot leading head\n\triverHeadGlow: 'rgba(120,225,255,0.95)',\n\tborder: '#f5f2ed', // neutral cream country borders/labels over the colored fills\n\tcream: '#f5f0eb',\n} as const;\n\n// Example progressive fill tokens. Rename these keys and replace values for each production.\nexport const COUNTRY = {\n\tchina: '#D4A853',\n\tindia: '#5B8A8A',\n\tbangladesh: '#C07B57',\n} as const;\n// Darker shade of each country colour — the settled border line (the bright COUNTRY colour is the\n// glowing draw-head that leads the animation).\nexport const COUNTRY_DARK = {\n\tchina: '#9A7530',\n\tindia: '#3C5C5C',\n\tbangladesh: '#855239',\n} as const;\nexport const FILL_OPACITY = 0.5;\n\nexport const VIDEO = {width: 1920, height: 1080, fps: 30} as const;\n\n// Beat durations (seconds → frames at VIDEO.fps)\nexport const DUR = {\n\tmapExplainer: 12 * VIDEO.fps,\n} as const;\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts"},{"path":"remotion-maps/techniques/maptiler/references/map-data-sources.md","content":"# Map element data sources\n\nChoose the source independently for every story element. A single map can—and often should—mix\nprovider vectors with custom geodata.\n\n## Decision rule\n\nUse a MapTiler Planet vector layer when the feature already exists there, its attributes support an\neditorially precise filter, and provider geometry is acceptable for the claim. Use custom GeoJSON when\nthe feature is absent, proposed, historical, disputed, corrected, privately sourced, or needs ordered\ngeometry for a deterministic draw.\n\n| Requirement                                                                 | MapTiler vector layer | Custom GeoJSON                              |\n| --------------------------------------------------------------------------- | --------------------- | ------------------------------------------- |\n| Roads, waterways, water, boundaries, land cover, or other standard context  | Prefer                | Use only when provider data is insufficient |\n| Basemap-consistent geometry without a duplicate local dataset               | Prefer                | No                                          |\n| Proposed, historical, classified, corrected, or production-specific element | No                    | Prefer                                      |\n| Fade, colour, width, radius, blur, or fill-opacity animation                | Yes                   | Yes                                         |\n| Feature-state highlight when a stable feature ID exists                     | Yes                   | Yes                                         |\n| Deterministic source-to-end line draw or perimeter draw                     | Bake first            | Prefer                                      |\n| Geometry editing, morphing, clipping, or exact sequencing                   | No                    | Prefer                                      |\n\nProvider alignment is not proof of correctness. Inspect the attributes and geometry against the\neditorial source before presenting a provider feature as evidence.\n\n## MapTiler vector mode\n\nMapTiler Planet is a vector tile source. Add it once, then build story layers with a\n`source-layer` and an exact attribute filter. Read the current MapTiler Planet schema before choosing\nlayer names or fields.\n\nCommon layer categories include `waterway`, `water`, `transportation`, `boundary`, `landcover`, and\n`poi`; availability, fields, and zoom ranges vary by schema version.\n\n```ts\nimport {addMapTilerVectorElement, setVectorElementPaint} from \"./MapTilerVectorElement\";\n\naddMapTilerVectorElement(map, process.env.REMOTION_MAPTILER_KEY!, {\n  id: \"story-river\",\n  sourceLayer: \"waterway\",\n  type: \"line\",\n  filter: [\n    \"all\",\n    [\"==\", [\"get\", \"class\"], \"river\"],\n    [\"==\", [\"coalesce\", [\"get\", \"name_en\"], [\"get\", \"name\"]], \"Yarlung Tsangpo\"],\n  ],\n  layout: {\"line-cap\": \"round\", \"line-join\": \"round\"},\n  paint: {\n    \"line-color\": \"#E8F7FF\",\n    \"line-width\": 3,\n    \"line-opacity\": 0,\n  },\n});\n\nsetVectorElementPaint(map, \"story-river\", {\n  \"line-opacity\": reveal,\n  \"line-width\": 2 + reveal * 2,\n});\n```\n\nAnimate provider features by changing paint properties from the Remotion frame: opacity, colour,\nwidth, blur, fill opacity, circle radius, or symbol opacity. Use feature state only when the source\nprovides stable IDs and the selection remains deterministic across tiles.\n\nDo not treat a tiled line as one ordered path. Vector tiles split features at tile boundaries, so a\nsource-to-mouth or start-to-end draw has no reliable global order. If that motion carries meaning,\nextract and verify the complete feature, order it once, save it as GeoJSON, and use the custom mode.\n\n## Custom geodata mode\n\nUse the bundled `../assets/RiverReveal.tsx` and `../scripts/prep-geo.mjs` pattern for custom GeoJSON. This mode owns\nthe exact geometry and can slice it by distance, calculate entry triggers, draw complete borders, and\nproduce deterministic sequences.\n\nCustom mode is mandatory when:\n\n- the feature is not in the provider dataset;\n- the story uses a proposed route, planned tunnel, historical boundary, disputed interpretation, or\n  non-public dataset;\n- provider geometry was editorially corrected;\n- motion must travel through the geometry in a verified order;\n- a complete off-screen boundary matters and a viewport query would silently crop it.\n\n## Hybrid mode\n\nUse provider vectors for ordinary contextual features and custom GeoJSON for the specific claim. For\nexample: MapTiler waterways and roads as aligned context; a custom proposed tunnel, dam site, disputed\nboundary, or verified evacuation area as the highlighted evidence.\n\nKeep provider and custom layers visually distinct when they carry different evidentiary weight. Record\nthe source and effective date of every custom layer in the production notes.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md"},{"path":"remotion-maps/techniques/maptiler/references/map-explainer-architecture.md","content":"# Map Explainer — architecture reference\n\nDeep detail behind `TECHNIQUE.md`: the timing model, the river reveal + electric head, the per-country\nsequence, and label projection. The supplied values are examples, not a production style system.\nThe custom-geometry example is `../assets/RiverReveal.tsx` +\n`../assets/CountryLabel.tsx` +\n`../assets/tokens.ts`. Provider-vector setup is in\n`../assets/MapTilerVectorElement.ts`; choose between\nthe two modes with `data-sources.md`.\n\n## 1. The render harness (per frame)\n\nInit the MapTiler map once (ref guard). On `load`: strip clutter (see `geo-prep.md`), add sources/layers,\nwait for `once('idle') → continueRender`. Per frame:\n\n```\ndelayRender → setData/setPaintProperty → map.once('idle', continueRender) → triggerRepaint\n```\n\n`preserveDrawingBuffer:true` so Remotion's screenshot captures the canvas. Render `--gl=angle`.\nFor an animated camera, read `render-stability.md`: the MapTiler renderer remains static and a CSS plate\ntransform supplies the camera choreography.\n\n## 2. Timing model — time-based; beat length derived from the sequences\n\nEverything keys off **seconds** (`t = frame / fps`), not reveal-units. The river draws over a window;\neach country **triggers when the river reaches it** and runs a fixed sequence. The beat is exactly as\nlong as the sequences need.\n\n```ts\nconst RIVER_START = 0.3, RIVER_END = 8.0;            // river draws over this window\nconst BORDER_S = 2.5, FILL_S = 1.0, LABEL_S = 0.7;   // per-country sequence (constant durations)\nconst trigger = (c) => RIVER_START + META[c].stop * (RIVER_END - RIVER_START);  // river-arrival time\n// beat length = max over c of (trigger(c) + BORDER_S + FILL_S + LABEL_S) + tail\nconst reveal = interpolate(t, [RIVER_START, RIVER_END], [0,1], { ...clamp, easing: Easing.bezier(0.645, 0.045, 0.355, 1) });\n```\n\n**Constant durations matter:** drive the border draw by _time since trigger_, not a slice of the reveal —\notherwise complex or long borders flash by in a fraction of a second.\n\n## 3. Provider-vector animation\n\nMapTiler Planet elements can be animated directly in place. Filter an exact `source-layer` feature,\ninitialize its paint in the hidden or neutral state, then update paint properties from the Remotion frame.\nThis works for line, fill, circle, and symbol layers without copying provider geometry into the project.\n\nDo not assume tiled geometry has a global order. Provider features are split at tile boundaries: opacity,\ncolour, width, blur, radius, fill, and feature-state changes are reliable; semantic start-to-end line\ndraws are not. Bake ordered GeoJSON when the direction of the draw carries meaning.\n\n## 4. Custom line animation — reveal + electric draw-head\n\nThe \"electricity\" is a **white-hot head** leading the draw — the last few % of the drawn line in its own\nbright + glow layers, faded out once the river completes.\n\n```ts\nconst riverDrawnKm = lineKm * reveal;\nmap.getSource(\"river\").setData(turf.lineSliceAlong(line, 0, Math.max(0.001, riverDrawnKm)));\nconst headKm = lineKm * 0.03;\nmap.getSource(\"river-head\").setData(turf.lineSliceAlong(line, Math.max(0, riverDrawnKm - headKm), Math.max(0.001, riverDrawnKm)));\nlet headFade = 0;\nif (reveal > 0.002 && reveal < 0.999) headFade = 1;\nelse if (reveal >= 0.999) headFade = 1 - clamp01((t - RIVER_END) / 0.5);  // fade out at the mouth\nmap.setPaintProperty(\"river-headglow\", \"line-opacity\", 0.85 * headFade);\nmap.setPaintProperty(\"river-head\", \"line-opacity\", headFade);\n```\n\nLayers, bottom→top: `river-glow` (electric blue `#49C6FF`, w11, op0.32, blur6) → `river-line`\n(icy core `#E8F7FF`, w3) → `river-headglow` (`rgba(120,225,255,.95)`, w16, blur9) → `river-head`\n(white `#FFFFFF`, w4.5). **No dark casing** — the bright icy core reads over every fill on its own.\n\n## 5. Country animation — border draws → fill blooms → label rises\n\nTriggered by river arrival, each country runs three sequential phases. The border is a **darker shade**\nof the country colour (the electricity is on the river, not here).\n\n```ts\nconst lt = t - trigger(c);                                   // local seconds since trigger\n// 1) complete source border draws on over a constant BORDER_S, multi-segment-safe\nconst bp = interpolate(clamp01(lt / BORDER_S), [0,1], [0,1], { easing: Easing.bezier(0.645, 0.045, 0.355, 1) });\nmap.getSource(`trail-${c}`).setData(sliceBorder(DRAW[c], 0, DRAW[c].total * bp));   // COUNTRY_DARK line\n// 2) fill blooms in (opacity overshoots, then settles) after the border completes\nconst fp = clamp01((lt - BORDER_S) / FILL_S);\nconst fo = interpolate(fp, [0, 0.6, 1], [0, FILL_OPACITY * 1.25, FILL_OPACITY], { ...clamp, easing: Easing.bezier(0.3333333333333333, 1, 0.6666666666666666, 1) });\nmap.setPaintProperty(`fill-${c}`, \"fill-opacity\", fp <= 0 ? 0 : fo);\n// 3) label rises in after the fill\nconst lp = clamp01((lt - BORDER_S - FILL_S) / LABEL_S);\n```\n\n`sliceBorder(d, fromKm, toKm)` reveals a portion of a complete (possibly multi-segment) border as a\nMultiLineString, slicing each segment by cumulative length — no joins across gaps and no viewport crop:\n\n```ts\nconst sliceBorder = (d, fromKm, toKm) => {\n  const out = [];\n  for (let i = 0; i < d.segLines.length; i++) {\n    const start = d.cum[i], end = start + d.segLen[i];\n    const a = Math.max(fromKm, start), b = Math.min(toKm, end);\n    if (b - a <= 0.0008) continue;\n    out.push(turf.lineSliceAlong(d.segLines[i], a - start, b - start).geometry.coordinates);\n  }\n  return { type:\"Feature\", properties:{}, geometry:{ type:\"MultiLineString\", coordinates: out } };\n};\n```\n\nChoose fill, border, and river colours in the production's local token file. The bundled token values are\nexamples only; do not carry a source project's palette into another production.\n\n## 6. Labels — HTML overlay, projected each frame\n\nLabels are React, not map symbols (full typography control). `CountryLabel` is an example accent-rule,\nrise-and-fade treatment; select the typeface and final values in the production.\nPositioned by projecting the anchor to screen pixels **every frame**, stored in state:\n\n```ts\nconst p = map.project(META[c].anchor);   // lngLat → screen px (respects the live camera)\npos[c] = { x: p.x, y: p.y, reveal: lp };\nsetLabels(pos);                          // re-render the overlay; effect deps exclude `labels`\n```\n\n`CountryLabel` shows the mechanics: uppercase region name, short accent divider, rise/fade entrance,\nand `pointerEvents:none`. Select font, weight, size, spacing, contrast, and colour from the production's\nown type and palette system.\n\n## 7. Camera — fixed map plate for any movement\n\nRead `render-stability.md`. Do not use per-frame `map.jumpTo()` for a moving 2D shot; it can shimmer in\nheadless renders even on satellite imagery. Interpolate the intended camera for the CSS plate transform,\nwhile keeping the MapTiler renderer static.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md"},{"path":"remotion-maps/techniques/maptiler/references/map-geo-prep.md","content":"# Map Explainer — basemap & geo prep\n\nHow the basemap is cleaned and how `../scripts/prep-geo.mjs` bakes the per-country data the component reads.\n\n## Basemap styling — strip the clutter\n\nOn `load`, remove the basemap's labels and inner admin borders so only your geography reads:\n\n```ts\nfor (const l of m.getStyle().layers as any[])\n  if (l.type === \"symbol\" || /other border/i.test(l.id)) m.removeLayer(l.id);\n```\n\n- `type === \"symbol\"` → every place/water/road **label** (the \"MapTiler labels\"). Gone.\n- Inner admin-border layer IDs vary by style. Inspect the loaded style, remove state/province/district\n  layers as needed, and retain only the context borders the production requires.\n- Logo/attribution: `maptilerLogo:false` + `attributionControl:false` aren't always enough — also hide\n  via CSS in the component:\n  ```tsx\n  <style>\n    {`\n      .maplibregl-ctrl-bottom-left,\n      .maplibregl-ctrl-bottom-right,\n      .maplibregl-ctrl-attrib,\n      .maptiler-logo {\n        display: none !important;\n      }\n    `}\n  </style>\n  ```\n\n## `../scripts/prep-geo.mjs` → outputs\n\nReads a routed river GeoJSON + country polygon GeoJSONs; writes:\n\n- **River line** — simplified for a smooth draw. For a braided river, route one source→mouth path through\n  the network first: greedy endpoint-chaining bounces between parallel channels. → `src/geo/river-flow.json`.\n- **`public/geo/borders.geojson`** — each country's polygon tagged `{country: name}` (one source,\n  filtered per country for the fills).\n- **`src/geo/country-meta.json`** — per country `{ stop, anchor, border }`.\n\n### `stop` — when a country lights up\n\nWalk the river points; first point inside a country (`turf.booleanPointInPolygon`) = the arc-length\nfraction where the river **enters** it. Drives the trigger time. The headwaters country = 0.\n\n### `anchor` — label centre via pole of inaccessibility\n\nThe most-interior point of the country (clipped to a per-country **story bbox** so a big country\ncentres in the relevant region, not its far bulge), then a small operator **nudge**. Pole = grid-sample\ninside the polygon, keep the point with max distance to the boundary. **Centroids get pulled to edges —\ndon't use them.**\n\n```js\nconst pole = (poly) => {\n  const bb = turf.bbox(poly), edge = turf.polygonToLine(poly), N = 46;\n  let best = null, bestD = -1;\n  for (let i = 0; i <= N; i++) for (let j = 0; j <= N; j++) {\n    const p = turf.point([bb[0]+(bb[2]-bb[0])*i/N, bb[1]+(bb[3]-bb[1])*j/N]);\n    if (!turf.booleanPointInPolygon(p, poly)) continue;\n    const d = turf.pointToLineDistance(p, edge);\n    if (d > bestD) { bestD = d; best = p.geometry.coordinates; }\n  }\n  return best;\n};\nconst ANCHOR_BBOX = { china:[82,27,96,32], india:[76,14,99,31], bangladesh:[86,20,93,27] };  // story regions\nconst NUDGE = { china:[0,0.6], india:[-1.0,0], bangladesh:[0,-0.6] };                          // operator-directed\n```\n\n### `border` — complete source geometry\n\nPreserve every exterior ring from the named country source. Never clip a country or bilateral border to\nthe framed bbox and never discard an off-screen segment: the geometry may leave the frame naturally.\nThe renderer handles a MultiLineString by cumulative length, so it remains one timed reveal without\ninventing joins across gaps.\n\n## Tuning the geo prep for a new scenario\n\n| Want                              | Knob                                                                 |\n| --------------------------------- | -------------------------------------------------------------------- |\n| Which countries                   | the country list in `prep-geo.mjs` (+ supply their polygon GeoJSONs) |\n| Label centred in the right region | `ANCHOR_BBOX[country]` (the story bbox)                              |\n| Nudge a label                     | `NUDGE[country]` (lng, lat offset)                                   |\n| What border is drawn              | the complete named source geometry; never the visible extent         |\n| When each lights up               | derived from `stop` — depends on the river geometry                  |\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md"},{"path":"remotion-maps/techniques/maptiler/references/render-stability.md","content":"# Moving Map Render Stability\n\nRead this reference before building a moving 2D MapTiler scene or diagnosing a wavering Remotion render.\n\n## Symptom and cause\n\nIf basemap detail shimmers or jitters during a pan/zoom, the likely cause is per-frame `map.jumpTo()`.\nHeadless MapTiler capture can resample both vector hillshade and satellite imagery differently frame to\nframe. Tile retries, easing changes, and label changes do not solve that renderer effect.\n\n## Required pattern: fixed map plate\n\nFor any 2D pan/zoom:\n\n1. Render the MapTiler canvas once at the largest required zoom in an oversized container. Size it from the camera route and keep each dimension below the browser's reliable WebGL render-buffer limit (commonly 4096 px). Do **not** blindly use 3×: a 1920×1080 composition becomes 5760 px wide and Chromium may silently downsample it, causing visible pixelation during the CSS zoom.\n2. Keep the map's camera static.\n3. For each frame, calculate the approved target centre/zoom, then move the canvas with CSS `translate` + `scale`.\n4. Apply the same transform to every projected HTML overlay.\n5. Continue to animate GeoJSON data and paint properties imperatively; only the renderer camera is frozen.\n\nKeep pitch and bearing constant. Use a 3D engine such as Cesium for genuine changing pitch/bearing or a terrain flythrough.\n\n```ts\nconst baseZoom = Math.max(start.zoom, end.zoom);\nconst map = new maptilersdk.Map({\n  container,\n  style,\n  center: end.center,\n  zoom: baseZoom,\n  pitch: end.pitch ?? 0,\n  bearing: end.bearing ?? 0,\n  interactive: false,\n  fadeDuration: 0,\n  canvasContextAttributes: {preserveDrawingBuffer: true},\n});\n\n// Per Remotion frame. `camera` is the approved centre/zoom interpolation.\nconst projected = map.project(camera.center);\nconst scale = 2 ** (camera.zoom - baseZoom);\nconst plate = {\n  transform: `translate(${width / 2 - projected.x * scale}px, ${height / 2 - projected.y * scale}px) scale(${scale})`,\n  transformOrigin: \"0 0\",\n};\n\n// Convert label projection with exactly the same plate transform.\nconst labelX = labelPoint.x * scale + width / 2 - projected.x * scale;\nconst labelY = labelPoint.y * scale + height / 2 - projected.y * scale;\n```\n\n### Plate sizing and sharpness\n\n- Render at the maximum zoom reached by **any** camera waypoint, including intermediate or hold cameras. The CSS scale should never exceed `1`; otherwise the plate is being enlarged.\n- Centre the frozen map on the midpoint of the camera route's geographic extent, not automatically on the final camera. This minimizes required overscan.\n- Keep the largest canvas dimension at or below 4096 px unless the actual render environment has been tested with a larger `MAX_RENDERBUFFER_SIZE`.\n- For 1920×1080, a 3840×2160 plate is a safe default. For 1080×1920, use approximately 2700×3840 when the route needs extra horizontal pan room.\n- If the route cannot fit within that plate at the required zoom, split the shot into two fixed plates with a deliberate editorial transition. Do not trade sharpness for one enormous canvas.\n- Distinguish failure modes: repeating shimmer means the live renderer is moving; steadily soft tiles during a CSS push means the fixed plate is underspecified, internally downsampled, or being scaled above `1`.\n\n## Verification\n\n- Render a short MP4, not only a Studio preview.\n- Inspect static terrain texture and satellite detail while the camera moves.\n- If any underlying map detail wavers, use the fixed map plate. Do not approve it as a minor preview artefact.\n- Render WebGL with `--gl=angle`, `preserveDrawingBuffer:true`, and conservative concurrency (`1`) while validating.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md"},{"path":"remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","content":"// Geo prep for the map-explainer. Bakes the data the component reads:\n//   out/river-flow.json    -> the river draw-on line   (→ copy to your Remotion project's src/geo/)\n//   out/country-meta.json  -> per-country { stop, anchor, border }   (→ src/geo/)\n//   out/borders.geojson    -> country polygons, each tagged {country}  (→ public/geo/  — loaded via staticFile)\n//\n// RUN:  node prep-geo.mjs        (needs YOUR geodata — see CONFIG; the source polygons are too large to ship,\n//                                 so the skill ships the OUTPUTS in assets/sample-data/ instead.)\n//\n// RIVER INPUT MUST BE ONE CLEAN LINESTRING, source → mouth (features[0].geometry is a LineString). If your\n// OSM river comes as many ways / braided channels, ROUTE it into a single line FIRST — a graph\n// shortest-path from source node to mouth node. Do NOT greedily chain by nearest endpoint: it bounces\n// between parallel channels. (That routing step is a prerequisite, not part of this script.)\n\nimport {readFileSync, writeFileSync, mkdirSync} from 'fs';\nimport {dirname, resolve} from 'path';\nimport {fileURLToPath} from 'url';\n\nif (process.argv.includes('--help')) {\n\tconsole.log(\n\t\t'Configure COUNTRIES, RIVER, BORDER, label bounds, and output paths in this script, then run: bun scripts/prep-geo.mjs',\n\t);\n\tprocess.exit(0);\n}\n\nconst turf = await import('@turf/turf');\n\nconst __dir = dirname(fileURLToPath(import.meta.url));\nconst root = resolve(__dir, '..');\nconst geo = resolve(root, '../geodata'); // ADAPT: where your input GeoJSON lives\nconst read = (p) => JSON.parse(readFileSync(p, 'utf8'));\n\n// ===== CONFIG — edit for your river + countries =====\nconst COUNTRIES = ['china', 'india', 'bangladesh']; // ORDERED headwaters → mouth; first = source (stop 0)\nconst RIVER = resolve(geo, 'focus-rivers/yarlung-brahmaputra-full-osm.geojson'); // a single clean source→mouth LineString\nconst BORDER = (name) => resolve(geo, `project-borders/${name}.geojson`); // one polygon file per country, named <country>.geojson\nconst FRAME_BBOX = [76, 14, 104, 33.5]; // [W,S,E,N] visible extent — fallback for label anchoring only\nconst ANCHOR_BBOX = {\n\tchina: [82, 27, 96, 32],\n\tindia: [76, 14, 99, 31],\n\tbangladesh: [86, 20, 93, 27],\n}; // [W,S,E,N] per-country label \"story region\"\nconst NUDGE = {china: [0, 0.6], india: [-1.0, 0], bangladesh: [0, -0.6]}; // [lng,lat] label nudge\nconst RIVER_SIMPLIFY_TOL = 0.006; // degrees — smooths the draw-on (bigger = simpler)\nconst OUT_RIVER = resolve(root, 'out/river-flow.json');\nconst OUT_META = resolve(root, 'out/country-meta.json');\nconst OUT_BORDERS = resolve(root, 'out/borders.geojson');\n// =====================================================\n\nconst havKm = (a, b) => {\n\tconst R = 6371,\n\t\tr = Math.PI / 180;\n\tconst dLat = (b[1] - a[1]) * r,\n\t\tdLng = (b[0] - a[0]) * r;\n\tconst h =\n\t\tMath.sin(dLat / 2) ** 2 +\n\t\tMath.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;\n\treturn 2 * R * Math.asin(Math.sqrt(h));\n};\n\n// --- River draw-on line: take the clean routed LineString, strip a dangling final hop, simplify so the\n// wide-zoom draw-on reads as one smooth thread (no bezier — meander overshoot on a long river). ---\nconst routed = read(RIVER).features[0].geometry.coordinates;\nlet end = routed.length;\nwhile (end > 2 && havKm(routed[end - 2], routed[end - 1]) > 15) end--; // drop a final cross-braid jump if present\nconst flow = turf.simplify(turf.lineString(routed.slice(0, end)), {\n\ttolerance: RIVER_SIMPLIFY_TOL,\n\thighQuality: true,\n}).geometry.coordinates;\n\n// --- Borders + country fills (one source, filtered per country in the component) ---\nconst borders = {type: 'FeatureCollection', features: []};\nconst polys = {};\nfor (const name of COUNTRIES) {\n\tconst fc = read(BORDER(name));\n\tpolys[name] = fc;\n\tfor (const f of fc.features) {\n\t\tf.properties = {...(f.properties || {}), country: name};\n\t\tborders.features.push(f);\n\t}\n}\n\n// --- Reveal stops: arc-length fraction of `flow` where the river first ENTERS each country. The first\n// country (headwaters) is the source, so its stop is 0; the rest are computed. ---\nconst flowKm = turf.length(turf.lineString(flow));\nconst insideCountry = (pt, name) =>\n\tpolys[name].features.some((f) => turf.booleanPointInPolygon(pt, f));\nconst stops = {};\nCOUNTRIES.forEach((c, i) => {\n\tstops[c] = i === 0 ? 0 : 1;\n}); // 0 = headwaters; 1 = sentinel until entered\nlet acc = 0;\nfor (let i = 0; i < flow.length; i++) {\n\tif (i > 0) acc += havKm(flow[i - 1], flow[i]);\n\tconst frac = acc / (flowKm || 1);\n\tconst pt = turf.point(flow[i]);\n\tfor (const c of COUNTRIES)\n\t\tif (stops[c] === 1 && insideCountry(pt, c)) stops[c] = frac;\n}\n\n// --- Per-country meta: anchor = pole of inaccessibility of the visible landmass (centred, away from\n// borders/edges) within the country's story region + a NUDGE; border = every exterior ring from the\n// complete named source. Never crop a country or bilateral boundary to the viewport. ---\nconst biggestPoly = (geom) => {\n\tconst rings =\n\t\tgeom.type === 'MultiPolygon' ? geom.coordinates : [geom.coordinates];\n\tlet best = null,\n\t\tbestA = -1;\n\tfor (const c of rings) {\n\t\tconst p = turf.polygon(c);\n\t\tconst a = turf.area(p);\n\t\tif (a > bestA) {\n\t\t\tbestA = a;\n\t\t\tbest = p;\n\t\t}\n\t}\n\treturn best;\n};\nconst largestPolygon = (fc) => {\n\tlet best = null,\n\t\tbestA = -1;\n\tfor (const f of fc.features) {\n\t\tconst p = biggestPoly(f.geometry),\n\t\t\ta = turf.area(p);\n\t\tif (a > bestA) {\n\t\t\tbestA = a;\n\t\t\tbest = p;\n\t\t}\n\t}\n\treturn best;\n};\nconst completeExteriorSegments = (fc) => {\n\tconst segments = [];\n\tfor (const feature of fc.features) {\n\t\tconst polygons =\n\t\t\tfeature.geometry.type === 'MultiPolygon'\n\t\t\t\t? feature.geometry.coordinates\n\t\t\t\t: [feature.geometry.coordinates];\n\t\tfor (const polygon of polygons)\n\t\t\tif (polygon[0]?.length > 1) segments.push(polygon[0]);\n\t}\n\treturn segments;\n};\nconst poleOfInaccessibility = (poly) => {\n\tconst bb = turf.bbox(poly),\n\t\tboundary = turf.polygonToLine(poly),\n\t\tN = 46;\n\tlet best = null,\n\t\tbestD = -1;\n\tfor (let i = 0; i <= N; i++)\n\t\tfor (let j = 0; j <= N; j++) {\n\t\t\tconst lng = bb[0] + ((bb[2] - bb[0]) * i) / N,\n\t\t\t\tlat = bb[1] + ((bb[3] - bb[1]) * j) / N;\n\t\t\tconst pt = turf.point([lng, lat]);\n\t\t\tif (!turf.booleanPointInPolygon(pt, poly)) continue;\n\t\t\tconst d = turf.pointToLineDistance(pt, boundary);\n\t\t\tif (d > bestD) {\n\t\t\t\tbestD = d;\n\t\t\t\tbest = [lng, lat];\n\t\t\t}\n\t\t}\n\treturn best;\n};\nconst countryMeta = {};\nfor (const name of COUNTRIES) {\n\tconst poly = largestPolygon(polys[name]);\n\tconst storyRegion = biggestPoly(\n\t\tturf.bboxClip(poly, ANCHOR_BBOX[name] || FRAME_BBOX).geometry,\n\t);\n\tconst pole = poleOfInaccessibility(storyRegion);\n\tconst segs = completeExteriorSegments(polys[name]);\n\tconst nudge = NUDGE[name] || [0, 0];\n\tcountryMeta[name] = {\n\t\tstop: stops[name],\n\t\tanchor: [pole[0] + nudge[0], pole[1] + nudge[1]],\n\t\tborder: segs,\n\t};\n}\n\nmkdirSync(dirname(OUT_RIVER), {recursive: true});\nwriteFileSync(OUT_RIVER, JSON.stringify(flow));\nwriteFileSync(OUT_META, JSON.stringify(countryMeta));\nwriteFileSync(OUT_BORDERS, JSON.stringify(borders));\nconsole.log(\n\t'river:',\n\tflow.length,\n\t'pts ·',\n\tflowKm.toFixed(0),\n\t'km · entry stops',\n\tJSON.stringify(stops),\n);\nfor (const n of COUNTRIES) {\n\tconst km = countryMeta[n].border.reduce(\n\t\t(s, seg) => s + turf.length(turf.lineString(seg)),\n\t\t0,\n\t);\n\tconsole.log(\n\t\t`  ${n}: anchor ${countryMeta[n].anchor.map((v) => v.toFixed(2)).join(',')} · border ${km.toFixed(0)} km`,\n\t);\n}\nconsole.log(\n\t\"\\nNext: copy out/river-flow.json + out/country-meta.json → your project's src/geo/ ; out/borders.geojson → public/geo/\",\n);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs"},{"path":"remotion-maps/techniques/maptiler/TECHNIQUE.md","content":"# MapTiler maps in Remotion\n\nMapTiler is a good solution for map animations where geographics features should be drawn as annotations on top of the map: Country borders, rivers, labels for POIs.\n\n## MapTiler SDK (`@maptiler/sdk`)\n\nDraw the basemap plus MapTiler Planet vector layers and custom GeoJSON into a WebGL canvas. Default styled-vector starting point: `MapStyle.BASIC`; satellite is an equally valid choice.\n\n## Remotion\n\nImperatively update `setData`/`setPaintProperty`.\n\nUse `jumpTo` only for a static shot, or a fixed map plate for any pan/zoom.\nGate with [`delayRender`](https://www.remotion.dev/docs/delay-render.md) until `map.once('idle')`.\n\nUse `preserveDrawingBuffer:true`.\n\nRender labels as positioned [`<Interactive.Div>`](https://www.remotion.dev/docs/interactive.md) elements.\n\nEnv `REMOTION_MAPTILER_KEY` (unrestricted). Init the map once (ref guard); update imperatively per frame.\n\nWhen constructing MapLibre/MapTiler layer objects, omit optional properties that are absent.  \nIn particular, use `...(layer.filter ? {filter: layer.filter} : {})`; do not pass `filter: undefined`. An undefined filter can suppress the layer while separately created halo or border layers continue rendering, producing missing country fills and dark marker halos with no coloured cores.\n\nDrive animation from `useCurrentFrame()` rather than CSS transitions or browser timers.  \n\n## Choose the source for each map element\n\nDo not begin by manufacturing GeoJSON. First check whether MapTiler Planet already exposes the element as filtered vector data.\n\n### MapTiler vector\n\nUse it when the feature exists in a provider `source-layer`, its attributes support an exact filter, and provider geometry is editorially acceptable.\n\n### Hybrid\n\nUse it when ordinary geographic context can come from MapTiler while the claim depends on custom\nevidence.\n\nAnimate each layer according to its source and meaning.\n\nMapTiler vector features remain split across tiles. Do not use them for a semantic start-to-end line draw; extract, verify, order, and bake that element to GeoJSON first. Read **`references/map-data-sources.md`** and reuse **`assets/MapTilerVectorElement.ts`** for provider-layer setup and per-frame paint updates.\n\n## Motion stability\n\n**Do not call `map.jumpTo()` on every Remotion frame when the camera moves.** In headless capture it can make both MapTiler hillshade **and satellite imagery** shimmer/jitter, even when the source tiles load correctly. This is renderer resampling, not a data, network, or label problem.\n\nFor the implementation, read **`references/render-stability.md`** before building or debugging any moving map. It contains the fixed-map-plate recipe, diagnostics, and render checks.\n\n- Use the live MapTiler camera only for a static shot.\n- Keep pitch and bearing constant for a fixed plate. This technique does not implement a genuine changing 3D camera.\n- Verify the moving preview and a short rendered MP4 before approving a beat. If any basemap detail wavers, switch to the fixed-plate pattern; do not try to solve it with tile retries or camera easing.\n\n## Drawing rivers\n\nUse `turf.lineSliceAlong(line, 0, lineKm*reveal)` to draw rivers.\n\n## Source selection\n\nUse MapTiler vector layers for suitable provider features and custom GeoJSON for story-specific or ordered geometry. If the beat needs country-entry triggers or a progressive line draw, run `scripts/prep-geo.mjs` to bake `country-meta.json`, `borders.geojson`, and the ordered line. Details → `references/map-data-sources.md` and `references/map-geo-prep.md`.\n\n## Keep it minmal\n\nStrip clutter on `load`: remove `symbol` layers (place labels) and `/other border/i` (admin-1 inner borders); hide the logo via CSS. Keep country + disputed borders.\n\n## Files\n\nUse as reference:\n\n- `assets/RiverReveal.tsx` — the main component.\n- `assets/MapTilerVectorElement.ts` — filtered MapTiler Planet elements.\n- `assets/CountryLabel.tsx` — reusable example label.\n- `assets/tokens.ts` — example palette and durations.\n- `assets/example-Root.tsx` — minimal composition scaffold.\n- `assets/sample-data/` — example route and generated country metadata.\n- `scripts/prep-geo.mjs` — geo pipeline.\n- `references/map-explainer-architecture.md` — timing model and implementation.\n- `references/map-data-sources.md` — provider vector versus custom GeoJSON selection.\n- `references/map-geo-prep.md` — basemap stripping and geo preparation.\n- `references/render-stability.md` — camera motion and stable headless renders.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md"},{"path":"remotion-maps/techniques/static-map/TECHNIQUE.md","content":"---\nname: remotion-maps-static\ndescription: Create a deterministic static locator map in Remotion when neither the camera nor geographic data animates.\n---\n\n# Static map\n\nUse a static image when the map only provides location context. This is the smallest, fastest, and\nmost deterministic map technique.\n\n## Build\n\n1. Export or request a map image at the composition's final aspect ratio and at least its rendered\n   pixel dimensions.\n2. Store the image in the Remotion project's `public/` directory.\n3. Render it with `CanvasImage` and `staticFile()`.\n4. Add labels or markers as ordinary Remotion elements if they remain fixed.\n\n```tsx\nimport React from 'react';\nimport {AbsoluteFill, CanvasImage, staticFile} from 'remotion';\n\nexport const StaticMap: React.FC = () => {\n\treturn (\n\t  <>\n  \t\t<CanvasImage\n  \t\t\tsrc={staticFile('locator-map.png')}\n  \t\t\tstyle={{width: '100%', height: '100%', objectFit: 'cover'}}\n  \t\t/>\n\t\t</>\n\t);\n};\n```\n\n## Overlays and Interactivity\n\nFollow [Remotion Interactivity](../../../remotion-interactivity/REFERENCE.md) best practices and [Remotion Markup Best practices](../../../remotion-markup/REFERENCE.md) for elements.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md"},{"path":"remotion-markup/3d.md","content":"---\nname: 3d\ndescription: 3D content in Remotion using Three.js and React Three Fiber.\nmetadata:\n  tags: 3d, three, threejs\n---\n\n# Using Three.js and React Three Fiber in Remotion\n\nFollow React Three Fiber and Three.js best practices.  \nOnly the following Remotion-specific rules need to be followed:\n\n## Prerequisites\n\nFirst, the `@remotion/three` package needs to be installed.  \nIf it is not, use the following command:\n\n```bash\nnpx remotion add @remotion/three # If project uses npm\nbunx remotion add @remotion/three # If project uses bun\nyarn remotion add @remotion/three # If project uses yarn\npnpm exec remotion add @remotion/three # If project uses pnpm\n```\n\n## Using ThreeCanvas\n\nYou MUST wrap 3D content in `<ThreeCanvas>` and include proper lighting.  \n`<ThreeCanvas>` MUST have a `width` and `height` prop.\n\n```tsx\nimport { ThreeCanvas } from \"@remotion/three\";\nimport { useVideoConfig } from \"remotion\";\n\nconst { width, height } = useVideoConfig();\n\n<ThreeCanvas width={width} height={height}>\n  <ambientLight intensity={0.4} />\n  <directionalLight position={[5, 5, 5]} intensity={0.8} />\n  <mesh>\n    <sphereGeometry args={[1, 32, 32]} />\n    <meshStandardMaterial color=\"red\" />\n  </mesh>\n</ThreeCanvas>;\n```\n\n## No animations not driven by `useCurrentFrame()`\n\nShaders, models etc MUST NOT animate by themselves.  \nNo animations are allowed unless they are driven by `useCurrentFrame()`.  \nOtherwise, it will cause flickering during rendering.\n\nUsing `useFrame()` from `@react-three/fiber` is forbidden.\n\n## Animate using `useCurrentFrame()`\n\nUse `useCurrentFrame()` to perform animations.\n\n```tsx\nconst frame = useCurrentFrame();\nconst rotationY = frame * 0.02;\n\n<mesh rotation={[0, rotationY, 0]}>\n  <boxGeometry args={[2, 2, 2]} />\n  <meshStandardMaterial color=\"#4a9eff\" />\n</mesh>;\n```\n\n## Using `<Sequence>` inside `<ThreeCanvas>`\n\nThe `layout` prop of any `<Sequence>` inside a `<ThreeCanvas>` must be set to `none`.\n\n```tsx\nimport { Sequence } from \"remotion\";\nimport { ThreeCanvas } from \"@remotion/three\";\n\nconst { width, height } = useVideoConfig();\n\n<ThreeCanvas width={width} height={height}>\n  <Sequence layout=\"none\">\n    <mesh>\n      <boxGeometry args={[2, 2, 2]} />\n      <meshStandardMaterial color=\"#4a9eff\" />\n    </mesh>\n  </Sequence>\n</ThreeCanvas>;\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/3d.md"},{"path":"remotion-markup/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-markup'\n  short_description: 'Apply Remotion animation and effects practices'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-markup: Apply best Remotion Practices to MyComp.tsx.'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/agents/openai.yaml"},{"path":"remotion-markup/arabic-text.md","content":"---\nname: arabic-text\ndescription: Arabic, Persian, Urdu and Hebrew text - base direction, word and letter animation that keeps Arabic letters joined, fonts.\nmetadata:\n  tags: arabic, rtl, persian, urdu, hebrew, typography, text-animation, captions\n---\n\n# Arabic and right-to-left text\n\n## Set the base direction\n\nPut `dir=\"rtl\"` and `lang` on the element that holds right-to-left text.\n\nWords or letters wrapped in `display: inline-block` (needed for `translate`, `scale`, `rotate`) are neutral to the bidi algorithm. Without a base direction the line defaults to LTR, so the words are placed left to right and the sentence reads backwards, even though every word looks correct. This is the usual failure of word-by-word captions and karaoke highlights.\n\nWhen the language comes from props, decide the direction from the words. Count words rather than reading the first letter, because Arabic captions often start with a Latin brand name:\n\n```tsx\nconst RTL = /[\\u0590-\\u08FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFF]/;\nconst isRtl = (words: string[]) =>\n  words.filter((w) => RTL.test(w)).length > words.length / 2;\n\n<div dir={isRtl(words) ? 'rtl' : 'ltr'}>{/* word spans */}</div>\n```\n\n## Animate words, not letters\n\nArabic letters change shape depending on their neighbours. `text.split('')`, `[...text]` or `Array.from(text)` put each letter in its own box, and a letter in an `inline-block` is shaped alone, so the word falls apart into isolated letters.\n\nPrefer word-level or line-level animation for Arabic. Split on spaces, give the container `dir=\"rtl\"`, animate each word.\n\n## Per-letter animation, if it is needed\n\nSplit into units that the browser can still join:\n\n- keep harakat (vowel marks) in the same unit as their letter\n- keep lam + alef (`لا`, `لأ`, `لإ`, `لآ`) as one unit, it is a ligature\n- keep runs of digits and Latin as one unit, or an RTL line reverses them\n- add a zero-width joiner (`\\u200D`) on each side of a unit that connects to its neighbour, so each unit is drawn in its connected form\n\n```tsx\nconst ZWJ = '\\u200D';\nconst RIGHT_JOINING = /[\\u0622-\\u0625\\u0627\\u0629\\u062F-\\u0632\\u0648\\u0671-\\u0673\\u0675-\\u0677\\u0688-\\u0699\\u06C0\\u06C3-\\u06CB\\u06CD\\u06CF\\u06D2\\u06D3\\u06D5]/;\nconst LETTER = /[\\u0620-\\u064A\\u066E-\\u06D3\\u06D5\\u06FA-\\u06FC\\u06FF]/;\nconst LTR_RUN = /^[0-9\\u0660-\\u0669\\u06F0-\\u06F9A-Za-z\\u066B\\u066C.,:%]+$/;\nconst MARK = /[\\u064B-\\u065F\\u0670\\u06D6-\\u06ED]/;\nconst MARKS = /[\\u064B-\\u065F\\u0670\\u06D6-\\u06ED\\u200D]/g;\nconst first = (u: string) => u.replace(MARKS, '')[0] ?? '';\nconst last = (u: string) => u.replace(MARKS, '').slice(-1);\nconst joinsPrev = (u: string) => LETTER.test(first(u)) && first(u) !== '\\u0621';\nconst joinsNext = (u: string) =>\n  LETTER.test(last(u)) && last(u) !== '\\u0621' && !RIGHT_JOINING.test(last(u));\n\nexport const splitArabicLetters = (text: string): string[] => {\n  const g: string[] = [];\n  for (const ch of text) {\n    if (MARK.test(ch) && g.length > 0) g[g.length - 1] += ch;\n    else g.push(ch);\n  }\n  const units: string[] = [];\n  for (let i = 0; i < g.length; i++) {\n    if (LTR_RUN.test(g[i])) {\n      let run = g[i];\n      while (g[i + 1] && LTR_RUN.test(g[i + 1])) run += g[++i];\n      units.push(run);\n    } else if (first(g[i]) === '\\u0644' && /[\\u0622\\u0623\\u0625\\u0627]/.test(first(g[i + 1] ?? ''))) {\n      units.push(g[i] + g[++i]);\n    } else {\n      units.push(g[i]);\n    }\n  }\n  return units.map((u, i) => {\n    const before = i > 0 && joinsNext(units[i - 1]) && joinsPrev(u) ? ZWJ : '';\n    const after = i < units.length - 1 && joinsNext(u) && joinsPrev(units[i + 1]) ? ZWJ : '';\n    return before + u + after;\n  });\n};\n```\n\nRender the units in a container with `dir=\"rtl\"`, one `inline-block` span per unit, and animate the spans as usual. In Remotion's Chrome renders the letters join exactly as in the unsplit word.\n\n## Fonts\n\nLoad an Arabic font explicitly, for example `@remotion/google-fonts/NotoSansArabic`, `IBMPlexSansArabic`, `Cairo` or `Tajawal`. See [google-fonts.md](google-fonts.md). A Latin-only font falls back to whatever Arabic font the render machine has.\n\nAvoid `letterSpacing` and `textTransform` on Arabic text.\n\nThe ZWJ technique needs care outside Chrome: Safari draws a ZWJ-padded letter in a fallback font when the font has no U+200D glyph, so the same composition shown in the `<Player>` on an iPhone can mix two typefaces inside a word. Alexandria (as served by Google Fonts), IBM Plex Sans Arabic, Cairo and Tajawal have no U+200D glyph; Noto Sans Arabic and Noto Naskh Arabic do. Video renders are not affected.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/arabic-text.md"},{"path":"remotion-markup/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.svg"},{"path":"remotion-markup/audio-visualization.md","content":"---\nname: audio-visualization\ndescription: Audio visualization patterns - spectrum bars, waveforms, bass-reactive effects\nmetadata:\n  tags: audio, visualization, spectrum, waveform, bass, music, audiogram, frequency\n---\n\n# Audio Visualization in Remotion\n\n## Prerequisites\n\n```bash\nnpx remotion add @remotion/media-utils\n```\n\n## Loading Audio Data\n\nUse `useWindowedAudioData()` (https://www.remotion.dev/docs/use-windowed-audio-data) to load audio data:\n\n```tsx\nimport { useWindowedAudioData } from \"@remotion/media-utils\";\nimport { staticFile, useCurrentFrame, useVideoConfig } from \"remotion\";\n\nconst frame = useCurrentFrame();\nconst { fps } = useVideoConfig();\n\nconst { audioData, dataOffsetInSeconds } = useWindowedAudioData({\n  src: staticFile(\"podcast.wav\"),\n  frame,\n  fps,\n  windowInSeconds: 30,\n});\n```\n\n## Spectrum Bar Visualization\n\nUse `visualizeAudio()` (https://www.remotion.dev/docs/visualize-audio) to get frequency data for bar charts:\n\n```tsx\nimport { useWindowedAudioData, visualizeAudio } from \"@remotion/media-utils\";\nimport { staticFile, useCurrentFrame, useVideoConfig } from \"remotion\";\n\nconst frame = useCurrentFrame();\nconst { fps } = useVideoConfig();\n\nconst { audioData, dataOffsetInSeconds } = useWindowedAudioData({\n  src: staticFile(\"music.mp3\"),\n  frame,\n  fps,\n  windowInSeconds: 30,\n});\n\nif (!audioData) {\n  return null;\n}\n\nconst frequencies = visualizeAudio({\n  fps,\n  frame,\n  audioData,\n  numberOfSamples: 256,\n  optimizeFor: \"speed\",\n  dataOffsetInSeconds,\n});\n\nreturn (\n  <div style={{ display: \"flex\", alignItems: \"flex-end\", height: 200 }}>\n    {frequencies.map((v, i) => (\n      <div\n        key={i}\n        style={{\n          flex: 1,\n          height: `${v * 100}%`,\n          backgroundColor: \"#0b84f3\",\n          margin: \"0 1px\",\n        }}\n      />\n    ))}\n  </div>\n);\n```\n\n- `numberOfSamples` must be power of 2 (32, 64, 128, 256, 512, 1024)\n- Values range 0-1; left of array = bass, right = highs\n- Use `optimizeFor: \"speed\"` for Lambda or high sample counts\n\n**Important:** When passing `audioData` to child components, also pass the `frame` from the parent. Do not call `useCurrentFrame()` in each child - this causes discontinuous visualization when children are inside `<Sequence>` with offsets.\n\n## Waveform Visualization\n\nUse `visualizeAudioWaveform()` (https://www.remotion.dev/docs/media-utils/visualize-audio-waveform) with `createSmoothSvgPath()` (https://www.remotion.dev/docs/media-utils/create-smooth-svg-path) for oscilloscope-style displays:\n\n```tsx\nimport {\n  createSmoothSvgPath,\n  useWindowedAudioData,\n  visualizeAudioWaveform,\n} from \"@remotion/media-utils\";\nimport { staticFile, useCurrentFrame, useVideoConfig } from \"remotion\";\n\nconst frame = useCurrentFrame();\nconst { width, fps } = useVideoConfig();\nconst HEIGHT = 200;\n\nconst { audioData, dataOffsetInSeconds } = useWindowedAudioData({\n  src: staticFile(\"voice.wav\"),\n  frame,\n  fps,\n  windowInSeconds: 30,\n});\n\nif (!audioData) {\n  return null;\n}\n\nconst waveform = visualizeAudioWaveform({\n  fps,\n  frame,\n  audioData,\n  numberOfSamples: 256,\n  windowInSeconds: 0.5,\n  dataOffsetInSeconds,\n});\n\nconst path = createSmoothSvgPath({\n  points: waveform.map((y, i) => ({\n    x: (i / (waveform.length - 1)) * width,\n    y: HEIGHT / 2 + (y * HEIGHT) / 2,\n  })),\n});\n\nreturn (\n  <svg width={width} height={HEIGHT}>\n    <path d={path} fill=\"none\" stroke=\"#0b84f3\" strokeWidth={2} />\n  </svg>\n);\n```\n\n## Bass-Reactive Effects\n\nExtract low frequencies for beat-reactive animations:\n\n```tsx\nconst frequencies = visualizeAudio({\n  fps,\n  frame,\n  audioData,\n  numberOfSamples: 128,\n  optimizeFor: \"speed\",\n  dataOffsetInSeconds,\n});\n\nconst lowFrequencies = frequencies.slice(0, 32);\nconst bassIntensity =\n  lowFrequencies.reduce((sum, v) => sum + v, 0) / lowFrequencies.length;\n\nconst scale = 1 + bassIntensity * 0.5;\nconst opacity = Math.min(0.6, bassIntensity * 0.8);\n```\n\n## Volume-Based Waveform\n\nUse `getWaveformPortion()` (https://www.remotion.dev/docs/get-waveform-portion) when you need simplified volume data instead of frequency spectrum:\n\n```tsx\nimport { getWaveformPortion } from \"@remotion/media-utils\";\nimport { useCurrentFrame, useVideoConfig } from \"remotion\";\n\nconst frame = useCurrentFrame();\nconst { fps } = useVideoConfig();\nconst currentTimeInSeconds = frame / fps;\n\nconst waveform = getWaveformPortion({\n  audioData,\n  startTimeInSeconds: currentTimeInSeconds,\n  durationInSeconds: 5,\n  numberOfSamples: 50,\n});\n\n// Returns array of { index, amplitude } objects (amplitude: 0-1)\nwaveform.map((bar) => (\n  <div key={bar.index} style={{ height: bar.amplitude * 100 }} />\n));\n```\n\n## Postprocessing\n\nLow frequencies naturally dominate. Apply logarithmic scaling for visual balance:\n\n```tsx\nconst minDb = -100;\nconst maxDb = -30;\n\nconst scaled = frequencies.map((value) => {\n  const db = 20 * Math.log10(value);\n  return (db - minDb) / (maxDb - minDb);\n});\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/audio-visualization.md"},{"path":"remotion-markup/audio.md","content":"---\nname: audio\ndescription: Using audio and sound in Remotion - importing, trimming, volume, speed, pitch\nmetadata:\n  tags: audio, media, trim, volume, speed, loop, pitch, mute, sound, sfx\n---\n\n# Using audio in Remotion\n\n## Prerequisites\n\nFirst, the @remotion/media package needs to be installed.\nIf it is not installed, use the following command:\n\n```bash\nnpx remotion add @remotion/media\n```\n\n## Importing Audio\n\nUse `<Audio>` from `@remotion/media` to add audio to your composition.\n\n```tsx\nimport { Audio } from \"@remotion/media\";\nimport { staticFile } from \"remotion\";\n\nexport const MyComposition = () => {\n  return <Audio src={staticFile(\"audio.mp3\")} />;\n};\n```\n\nRemote URLs are also supported:\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\n<Audio src=\"https://remotion.media/audio.mp3\" />\n```\n\nBy default, audio plays from the start, at full volume and full length.\nMultiple audio tracks can be layered by adding multiple `<Audio>` components.\n\n## Trimming\n\nUse `trimBefore` to skip the beginning of the audio and `durationInFrames` to end it early. Values are in frames.\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\nconst { fps } = useVideoConfig();\n\nreturn (\n  <Audio\n    src={staticFile(\"audio.mp3\")}\n    trimBefore={2 * fps} // Skip the first 2 seconds\n    durationInFrames={8 * fps} // Play 8 seconds, until the 10 second mark\n  />\n);\n```\n\nThe audio still starts playing at the beginning of the composition - only the specified portion is played.\n\n## Delaying\n\nSet `from` directly on `<Audio>` to delay when it starts:\n\n```tsx\nimport { staticFile, useVideoConfig } from \"remotion\";\nimport { Audio } from \"@remotion/media\";\n\nconst { fps } = useVideoConfig();\n\nreturn (\n  <Audio from={fps} src={staticFile(\"audio.mp3\")} />\n);\n```\n\nThe audio will start playing after 1 second.\n\n## Volume\n\nSet a static volume (0 to 1):\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\n<Audio src={staticFile(\"audio.mp3\")} volume={0.5} />\n```\n\nUse `useCurrentFrame()` and `interpolate()` for keyframed volume:\n\n```tsx\nimport { Audio } from \"@remotion/media\";\nimport { interpolate, staticFile, useCurrentFrame, useVideoConfig } from \"remotion\";\n\nconst frame = useCurrentFrame();\nconst { fps } = useVideoConfig();\n\nreturn (\n  <Audio\n    src={staticFile(\"audio.mp3\")}\n    volume={interpolate(frame, [0, 1 * fps], [0, 1], {\n      extrapolateLeft: \"clamp\",\n      extrapolateRight: \"clamp\",\n    })}\n  />\n);\n```\n\nWith Studio interactivity enabled, these keyframes can be edited and are shown as a volume curve in the timeline.\n\n## Muting\n\nUse `muted` to silence the audio. It can be set dynamically:\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\nconst frame = useCurrentFrame();\nconst { fps } = useVideoConfig();\n\nreturn (\n  <Audio\n    src={staticFile(\"audio.mp3\")}\n    muted={frame >= 2 * fps && frame <= 4 * fps} // Mute between 2s and 4s\n  />\n);\n```\n\n## Speed\n\nUse `playbackRate` to change the playback speed:\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\n// 2x speed\n<Audio src={staticFile(\"audio.mp3\")} playbackRate={2} />\n// Half speed\n<Audio src={staticFile(\"audio.mp3\")} playbackRate={0.5} />\n```\n\nReverse playback is not supported.\n\n## Looping\n\nUse `loop` to loop the audio indefinitely:\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\n<Audio src={staticFile(\"audio.mp3\")} loop />\n```\n\nPut `name`, `from`, `loop`, and `volume` directly on `<Audio>`.\n\n```tsx\nimport { Audio } from \"@remotion/media\";\nimport { interpolate, staticFile, useCurrentFrame } from \"remotion\";\n\nconst frame = useCurrentFrame();\n\n<Audio\n  src={staticFile(\"audio.mp3\")}\n  loop\n  volume={interpolate(frame, [0, 300], [1, 0], {\n    extrapolateLeft: \"clamp\",\n    extrapolateRight: \"clamp\",\n  })}\n/>\n```\n\n## Pitch\n\nUse `toneFrequency` to adjust the pitch without affecting speed. Values range from 0.01 to 2:\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\n<Audio\n  src={staticFile(\"audio.mp3\")}\n  toneFrequency={1.5} // Higher pitch\n/>\n<Audio\n  src={staticFile(\"audio.mp3\")}\n  toneFrequency={0.8} // Lower pitch\n/>\n```\n\nPitch shifting only works during server-side rendering, not in the Remotion Studio preview or in the `<Player />`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/audio.md"},{"path":"remotion-markup/calculate-metadata.md","content":"---\nname: calculate-metadata\ndescription: Dynamically set composition duration, dimensions, and props\nmetadata:\n  tags: calculateMetadata, duration, dimensions, props, dynamic\n---\n\n# Using calculateMetadata\n\nUse `calculateMetadata` on a `<Composition>` to dynamically set duration, dimensions, and transform props before rendering.\nUse it when metadata depends on input props, fetched data, or asset metadata.\nFor static dimensions, duration, FPS, and initial props, inline the values on `<Composition>` instead.\n\n```tsx\n<Composition\n  id=\"MyComp\"\n  component={MyComponent}\n  durationInFrames={300}\n  fps={30}\n  width={1920}\n  height={1080}\n  defaultProps={{ videoSrc: \"https://remotion.media/video.mp4\" }}\n  calculateMetadata={calculateMetadata}\n/>\n```\n\n## Setting duration based on a video\n\nUse the [`getVideoDuration`](../remotion-multimedia/get-video-duration.md) and [`getVideoDimensions`](../remotion-multimedia/get-video-dimensions.md) skills to get the video duration and dimensions:\n\n```tsx\nimport { CalculateMetadataFunction } from \"remotion\";\nimport { getVideoDuration } from \"./get-video-duration\";\n\nconst calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n}) => {\n  const durationInSeconds = await getVideoDuration(props.videoSrc);\n\n  return {\n    durationInFrames: Math.ceil(durationInSeconds * 30),\n  };\n};\n```\n\n## Matching dimensions of a video\n\nUse the [`getVideoDimensions`](../remotion-multimedia/get-video-dimensions.md) skill to get the video dimensions:\n\n```tsx\nimport { CalculateMetadataFunction } from \"remotion\";\nimport { getVideoDuration } from \"./get-video-duration\";\nimport { getVideoDimensions } from \"./get-video-dimensions\";\n\nconst calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n}) => {\n  const dimensions = await getVideoDimensions(props.videoSrc);\n\n  return {\n    width: dimensions.width,\n    height: dimensions.height,\n  };\n};\n```\n\n## Setting duration based on multiple videos\n\n```tsx\nconst calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n}) => {\n  const metadataPromises = props.videos.map((video) =>\n    getVideoDuration(video.src),\n  );\n  const allMetadata = await Promise.all(metadataPromises);\n\n  const totalDuration = allMetadata.reduce(\n    (sum, durationInSeconds) => sum + durationInSeconds,\n    0,\n  );\n\n  return {\n    durationInFrames: Math.ceil(totalDuration * 30),\n  };\n};\n```\n\n## Setting a default outName\n\nSet the default output filename based on props:\n\n```tsx\nconst calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n}) => {\n  return {\n    defaultOutName: `video-${props.id}`, // .mp4 is added automatically\n  };\n};\n```\n\n## Transforming props\n\nFetch data or transform props before rendering:\n\n```tsx\nconst calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n  abortSignal,\n}) => {\n  const response = await fetch(props.dataUrl, { signal: abortSignal });\n  const data = await response.json();\n\n  return {\n    props: {\n      ...props,\n      fetchedData: data,\n    },\n  };\n};\n```\n\nThe `abortSignal` cancels stale requests when props change in the Studio.\n\n## Return value\n\nAll fields are optional. Returned values override the `<Composition>` props:\n\n- `durationInFrames`: Number of frames\n- `width`: Composition width in pixels\n- `height`: Composition height in pixels\n- `fps`: Frames per second\n- `props`: Transformed props passed to the component\n- `defaultOutName`: Default output filename\n- `defaultCodec`: Default codec for rendering\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/calculate-metadata.md"},{"path":"remotion-markup/color-correction.md","content":"---\nname: color-correction\ndescription: Correct exposure, white balance, and tone with primary adjustments, Levels, Curves, and 3D Cube LUTs.\nmetadata:\n  tags: color-correction, color-grading, levels, curves, lut, cube, exposure, white-balance\n---\n\n# Color correction\n\nApply color adjustments through the `effects` prop of `<Video>` from `@remotion/media`, or other supported components.  \nSee [effects.md](effects.md) for more context on effects.\n\n## Primary adjustments\n\nPrefer [`colorCorrection()`](https://www.remotion.dev/docs/effects/color-correction) when combining adjustments.  \nIt performs them in one WebGL pass and exposes controls in the Studio.\n\n| Control                 | Meaning and range                                                         | Neutral value |\n| ----------------------- | ------------------------------------------------------------------------- | ------------- |\n| `exposure`              | Stops, from `-5` to `5`; positive values brighten                         | `0`           |\n| `temperature`           | From `-1` (cooler) to `1` (warmer)                                        | `0`           |\n| `tint`                  | From `-1` (greener) to `1` (more magenta)                                 | `0`           |\n| `shadows`, `highlights` | From `-1` to `1`; negative values darken, positive values lift the region | `0`           |\n| `blacks`, `whites`      | From `-1` to `1`; target narrower regions near black and white            | `0`           |\n| `contrast`              | Non-negative multiplier around `pivot` (`0` to `1`, default `0.5`)        | `1`           |\n| `saturation`            | Non-negative multiplier; `0` is grayscale                                 | `1`           |\n| `vibrance`              | From `-1` to `1`; positive values emphasize muted colors                  | `0`           |\n\n```tsx\nimport {colorCorrection} from '@remotion/effects/color-correction';\nimport {Video} from '@remotion/media';\nimport {staticFile} from 'remotion';\n\nexport const CorrectedVideo = () => {\n  return (\n    <Video\n      src={staticFile('footage.mp4')}\n      effects={[\n        colorCorrection({\n          exposure: 0.25,\n          temperature: 0.1,\n          tint: -0.03,\n          shadows: 0.15,\n          highlights: -0.1,\n          contrast: 1.1,\n          saturation: 1.05,\n          vibrance: 0.15,\n        }),\n      ]}\n    />\n  );\n};\n```\n\nInternally, `colorCorrection()` applies exposure, white balance, tonal regions,\ncontrast, saturation, then vibrance. Omitted controls use their neutral values.\nKeep everything inline on the target's `effects` prop.\n\nStandalone effects are also available when a different order or an additional\nadjustment is needed: `exposure()`, `whiteBalance()`, `shadowsHighlights()`,\n`contrast()`, `saturation()`, and `vibrance()`. See [effects](effects.md)\n\n## Levels and Curves\n\nUse [`levels()`](https://www.remotion.dev/docs/effects/levels) to set input black\nand white points, adjust midtones with gamma, or limit the output range.\n`blackPoint` and `whitePoint` are normalized from `0` to `1`, default to `0` and\n`1`, and require `blackPoint < whitePoint`. `gamma` ranges from `0.01` to `10`,\ndefaults to `1`, and values above `1` brighten midtones. `outputBlack` and\n`outputWhite` range from `0` to `1` and default to `0` and `1`; reversing them\ninverts the output.\n\nUse [`curves()`](https://www.remotion.dev/docs/effects/curves) for an S-curve or\nother adjustments that need multiple input/output control points. Supply `2` to\n`32` `[input, output]` pairs with both coordinates in `0` to `1` and strictly\nincreasing input values. Outputs may increase or decrease. The default\n`[[0, 0], [1, 1]]` leaves the image unchanged. Values outside the first and last\ninput points use the nearest endpoint's output.\n\nCurves uses `interpolation: 'smooth'` by default, connecting points without\novershooting their output values. Use `'linear'` for straight segments.\n`amount` blends with the original image from `0` to `1` (default `1`).\n\nBoth effects default to `channel: 'rgb'`. Set `'red'`, `'green'`, or `'blue'` to\nadjust one channel, and stack separate effect calls for different channel\nadjustments. Both preserve alpha. Curves, the Levels channel/output controls,\nand their graphical Studio editors are available from Remotion `4.0.537`.\n\nKeep the effect calls and point arrays inline so Studio can edit them:\n\n```tsx\nimport {curves} from '@remotion/effects/curves';\nimport {levels} from '@remotion/effects/levels';\nimport {Video} from '@remotion/media';\nimport {staticFile} from 'remotion';\n\nexport const ToneAdjustedVideo = () => {\n  return (\n    <Video\n      src={staticFile('footage.mp4')}\n      effects={[\n        levels({\n          blackPoint: 0.03,\n          whitePoint: 0.95,\n          gamma: 1.1,\n          outputBlack: 0.02,\n          outputWhite: 0.98,\n        }),\n        curves({\n          channel: 'red',\n          points: [[0, 0], [0.5, 0.55], [1, 1]],\n          amount: 0.8,\n        }),\n      ]}\n    />\n  );\n};\n```\n\nEffects run in array order: this example adjusts the RGB levels, then lifts\nred midtones. Place primary adjustments before `lut()` when the LUT should\nreceive the corrected footage.\n\n## LUTs and combining effects\n\nA LUT (lookup table) maps input RGB colors to output colors. Use\n[`lut()`](https://www.remotion.dev/docs/effects/lut) to apply a 3D `.cube` LUT.  \nIts `content` parameter takes the complete file contents as a string.\n\nThis example uses a small warm LUT inline:\n\n```tsx\nimport {colorCorrection} from '@remotion/effects/color-correction';\nimport {lut} from '@remotion/effects/lut';\nimport {Video} from '@remotion/media';\nimport {staticFile} from 'remotion';\n\nexport const GradedVideo = () => {\n  return (\n    <Video\n      src={staticFile('footage.mp4')}\n      effects={[\n        colorCorrection({exposure: 0.25, contrast: 1.1}),\n        lut({\n          content: `TITLE \"Warm\"\nLUT_3D_SIZE 2\n0 0 0\n1 0.1 0\n0 0.9 0.1\n1 0.9 0.1\n0 0.1 0.8\n1 0.2 0.7\n0 0.9 0.8\n1 0.9 0.8`,\n        }),\n      ]}\n    />\n  );\n};\n```\n\n### Supported format and limitations\n\n- Only 3D `.cube` LUTs are supported. `LUT_3D_SIZE` must be an integer from `2`\n  to `256`, followed by exactly `size ** 3` RGB rows. 1D LUTs are unsupported.\n- Optional `TITLE`, `DOMAIN_MIN`, `DOMAIN_MAX`, blank lines, and `#` comments are\n  supported. Other LUT formats need conversion before use.\n- `lut()` has no `src` or strength/amount parameter. Use `disabled: true` to\n  bypass it.\n\n## Studio workflow\n\nSelect the layer and open its effect in the inspector. Levels shows an input\nhistogram with black, gamma, and white input handles plus output endpoints.\nCurves shows an input histogram behind the graph: add or drag points, edit\ntheir numeric coordinates, remove points, or reset the curve. The histogram\nshows pixels entering that effect, including adjustments earlier in the stack.\n\nLevels numeric controls and Curves `amount` can be keyframed in Studio.\nCurves points are not keyframable in Studio. To animate them, derive `points`\nfrom `useCurrentFrame()` in code, keeping input values strictly increasing on\nevery frame. Computed point arrays display as read-only in the graph.\n\nPut `.cube` files in `public/` to preview them in the Assets panel.  \nThe user can drag a 3D `.cube` file from the computer or Assets panel onto a\nvideo in the canvas or timeline to apply the LUT effect.\n\n## See also\n\n- [Color correction documentation](https://www.remotion.dev/docs/color-correction)\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/color-correction.md"},{"path":"remotion-markup/compositions.md","content":"---\nname: compositions\ndescription: Defining compositions, stills, folders, default props and dynamic metadata\nmetadata:\n  tags: composition, still, folder, props, metadata\n---\n\nA `<Composition>` defines the component, width, height, fps and duration of a renderable video.\n\n## Source-editable registrations\n\nGive each composition or still that should be edited independently in the\nStudio its own authored JSX node. Use a JSX string literal for `id`, and keep\nits metadata and editable default values directly on that node.\n\nProgrammatic registration is suitable when the generated compositions are\nintentionally controlled as one source template and do not need to be\nreordered, duplicated, deleted or edited individually in the Studio.\n\n```tsx title=\"src/MyComposition.tsx\"\ntype Props = {\n  readonly title: string;\n};\n\nexport const MyComposition = ({title}: Props) => <h1>{title}</h1>;\n```\n\n```tsx title=\"src/Root.tsx\"\nimport {Composition} from 'remotion';\nimport {MyComposition} from './MyComposition';\n\nexport const RemotionRoot = () => {\n  return (\n    <>\n      <Composition\n        id=\"Launch\"\n        component={MyComposition}\n        durationInFrames={180}\n        fps={30}\n        width={1920}\n        height={1080}\n        defaultProps={{title: 'Launch'}}\n      />\n      <Composition\n        id=\"Recap\"\n        component={MyComposition}\n        durationInFrames={240}\n        fps={30}\n        width={1920}\n        height={1080}\n        defaultProps={{title: 'Recap'}}\n      />\n    </>\n  );\n};\n```\n\nBoth registrations can reuse the same component. Keeping them as separate JSX\nnodes gives each one its own source-editing target.\n\n## Default Props and scaffold metadata\n\nPass `defaultProps` to provide initial values for your component.  \nValues must be JSON-serializable (`Date`, `Map`, `Set`, and `staticFile()` are supported).\nUse `defaultProps` for composition-wide values that should be visible and editable before the video renders.\n\nKeep data owned by a child editor on that child's JSX node. For example,\ncaptions that should remain editable in the Caption editor belong as an inline\narray on `<BasicCaptions>`, not in composition `defaultProps` or a component\nprop. See [Displaying captions](../remotion-captions/display-captions.md).\n\nFor Studio editing, keep `defaultProps` as an inline object literal on `<Composition>` or `<Still>`.\nKeep values that should be written back directly in the object instead of deriving them from a loop variable.\nDo not store it in a variable, import it, spread it, create it with a helper, or wrap it in `satisfies`.\nUse `type` declarations for props rather than `interface` to ensure `defaultProps` type safety.\n\n```tsx title=\"src/Root.tsx\"\nimport {Composition} from 'remotion';\nimport {MyComposition} from './MyComposition';\n\nconst defaultProps = { title: \"Hello World\" };\n\nexport const RemotionRoot = () => {\n  return (\n    <>\n      {/* 👍 Inline metadata and defaults */}\n      <Composition\n        id=\"MyComposition\"\n        component={MyComposition}\n        durationInFrames={100}\n        fps={30}\n        width={1080}\n        height={1080}\n        defaultProps={{ title: \"Hello World\" }}\n      />\n\n      {/* 👎 Hidden defaults cannot be saved back by Studio */}\n      <Composition\n        id=\"OtherComposition\"\n        component={MyComposition}\n        durationInFrames={100}\n        fps={30}\n        width={1080}\n        height={1080}\n        defaultProps={defaultProps}\n      />\n    </>\n  );\n};\n```\n\n## Folders\n\nUse `<Folder>` to organize compositions in the sidebar.  \nFolder names can only contain letters, numbers, and hyphens.\n\n```tsx title=\"src/Root.tsx\"\nimport { Composition, Folder } from \"remotion\";\n\nexport const RemotionRoot = () => {\n  return (\n    <>\n      <Folder name=\"Marketing\">\n        <Composition id=\"Promo\" /* ... */ />\n        <Composition id=\"Ad\" /* ... */ />\n      </Folder>\n      <Folder name=\"Social\">\n        <Folder name=\"Instagram\">\n          <Composition id=\"Story\" /* ... */ />\n          <Composition id=\"Reel\" /* ... */ />\n        </Folder>\n      </Folder>\n    </>\n  );\n};\n```\n\n## Stills\n\nUse `<Still>` for single-frame images. It does not require `durationInFrames` or `fps`.\n\n```tsx title=\"src/Root.tsx\"\nimport { Still } from \"remotion\";\nimport { Thumbnail } from \"./Thumbnail\";\n\nexport const RemotionRoot = () => {\n  return (\n    <Still\n      id=\"Thumbnail\"\n      component={Thumbnail}\n      width={1280}\n      height={720}\n    />\n  );\n};\n```\n\n## Dynamic duration, width, and height\n\nUse [`calculateMetadata`](./calculate-metadata.md) to make dimensions, duration, or props dynamic based on input props, fetched data, or asset metadata.\n\n## Nesting compositions within another\n\nTo render a composition's component inside another composition, use `<Sequence>` with `width` and `height` when the nested content needs its own dimensions.\n\nWhen the nested scene should have its own editable Studio timeline, use the [connected composition structure](connected-compositions.md).\n\n```tsx\n<>\n  <Video src=\"https://remotion.media/video.mp4\" />\n  <Sequence\n    width={1920}\n    height={1080}\n  >\n    <OverlayComponent />\n  </Sequence>\n</>\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/compositions.md"},{"path":"remotion-markup/connected-compositions.md","content":"# Connected compositions\n\nA connected composition lets the user open a scene or element in its own\nStudio timeline while editing the implementation used by the parent video.\nUse it for a substantial scene, a reusable card, or a group that should move\nand be edited together, such as a sticker with its sound or a summary graphic.\nA layout container or decorative detail usually belongs inside that group as\nplain HTML.\n\n## Create the connection\n\n1. Export the component with `Interactive.create()`. Use `layout: 'absolute-fill'`\n   for a scene or `layout: 'none'` for a bounded element.\n2. Render that exported component in the parent, with its instance props inline.\n   Put timing directly on it, or on the shared `Sequence` or\n   `TransitionSeries.Sequence` that governs its layers.\n3. Register the exact same exported reference in `<Composition component={...}>`.\n   Give the registration a unique literal ID, inline metadata, and representative\n   inline `defaultProps`. Registering an inner component or an inline wrapper\n   does not connect the instance the user sees.\n\nFollow the [complete timeline example](../remotion-interactivity/timeline-structure.md)\nfor the component definitions, parent, and registrations.\n\nEach independently editable instance still needs its own JSX node. Reuse a\ncomponent for repeated units rather than copying its implementation or generating\nall instances from one `.map()` call. Keep editor-owned data at its editable\nsource: caption arrays belong inline on the caption component, not behind a\nprop of a generic shot component.\n\n## Make the component independent of its parent\n\nThe parent is not mounted when the standalone composition opens. Load fonts\ninside the component or a shared imported module, and keep required typography\nthere. Supply representative content, background, and alignment in the\nregistration's defaults. Those defaults do not automatically apply to parent\ninstances or copy their props.\n\nMatch the parent's fps and dimensions unless a difference is intentional.\nPreserve the source-time offset as well as the duration when the component's\ncaptions or overlays read original-media frames. The instance's placement in\nthe parent timeline does not usually belong in its standalone defaults.\n\n## Extract an existing group\n\nFor a pre-compose request, move the selected markup into a named component and\nregister it. If the selection already has a meaningful timing wrapper, keep\nthat wrapper and its props in place and extract its contents. Preserve trim,\nspeed, stacking order, inherited styles, and the duration needed by sound tails.\nA new component file without its registration does not complete the connection.\n\n## Verify both views\n\nOpen the full composition and the standalone composition. Check that the group\nlooks and sounds the same, that its timeline has useful editing units, and that\ndouble-clicking the parent instance opens the intended composition. For a\nrefactor, compare representative frames and check cut boundaries, captions,\nentrance animations, and audio tails.\n\nConnected compositions provide editing boundaries, not a promise to collapse\nall their rows. Studio's compact-series view can expose connected children.\nInspect the full-video timeline as well as the standalone view before claiming\nthat an extraction reduced clutter. Treat row expansion or unused vertical\nspace as a layout issue when the markup already expresses the correct groups;\navoid extra wrappers or hidden editable layers solely to force a compact view.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/connected-compositions.md"},{"path":"remotion-markup/cropping.md","content":"# Cropping\n\nPreferably, the `cropLeft`, `cropRight`, `cropTop` and `cropBottom` props are used to crop content.\nIt allows for interactively dragging the components and adapting the outlines in the canvas to the crop.\n\nThe following components support `crop*` props:\n\n- `<Sequence>` from `remotion`, when `layout=\"absolute-fill\"`\n- `<Interactive.*>` HTML and SVG elements from `remotion`\n- Custom components made with `Interactive.create()` from `remotion`, using a managed `layout: 'absolute-fill'` root or forwarding `style` to their own visual root\n- `<CanvasImage>` from `remotion`\n- `<Img>` from `remotion`\n- `<AnimatedImage>` from `remotion`\n- `<HtmlInCanvas>` from `remotion`\n- `<Solid>` from `remotion`\n- `<Video>` from `@remotion/media`\n- `<Gif>` from `@remotion/gif`\n- `<RemotionRiveCanvas>` from `@remotion/rive`\n\nCrop values are ratios between `0` and `1`.\nA value of `0` applies no crop on that edge.\nA value of `1` is a full crop.\nKeep [Interactivity Best Practices](../remotion-interactivity/REFERENCE.md) also for cropping, to keep it editable and keyframable.\n\n```tsx\n<CanvasImage\n  src={staticFile(\"photo.png\")}\n  cropLeft={interpolate(frame, [0, 30], [0, 0.25], {\n    extrapolateLeft: \"clamp\",\n    extrapolateRight: \"clamp\",\n  })}\n  cropBottom={0.1}\n/>\n```\n\nDo not use `clipPath` together with crop props.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/cropping.md"},{"path":"remotion-markup/effects.md","content":"---\nname: effects\ndescription: Canvas/WebGL visual effects for Remotion using effects arrays and createEffect().\nmetadata:\n  tags: effects, visual-effects, webgl, canvas, video, create-effect\n---\n\nRead this guidance when adding an effect to a component that supports `effects`,\nor when considering canvas post-processing or a reusable custom effect.\n\nDocs: https://www.remotion.dev/docs/effects\nCustom effect docs: https://www.remotion.dev/docs/create-effect\n\nFor exposure, white balance, Levels, Curves, and LUTs, read\n[color-correction.md](color-correction.md).\n\n## Usage\n\nInstall the package that provides the chosen effect:\n\n```bash\nnpx remotion add @remotion/effects\n```\n\nEffects are functions passed to the `effects` prop of supported components.\n\nThese components accept `effects` directly:\n\n| Import from        | Components                                                                                                                    |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------------- |\n| `remotion`         | `<Img>`, `<CanvasImage>`, `<AnimatedImage>`, `<Solid>`, `<HtmlInCanvas>`                                                      |\n| `@remotion/media`  | `<Video>`                                                                                                                     |\n| `@remotion/gif`    | `<Gif>`                                                                                                                       |\n| `@remotion/rive`   | `<RemotionRiveCanvas>`                                                                                                        |\n| `@remotion/shapes` | `<Arrow>`, `<Callout>`, `<Circle>`, `<Ellipse>`, `<Heart>`, `<Pie>`, `<Polygon>`, `<Rect>`, `<Spark>`, `<Star>`, `<Triangle>` |\n\nOrdinary HTML elements, `<Interactive.*>` DOM wrappers, `<AbsoluteFill>`, and\n`<Sequence>` do not accept `effects` directly. To apply effects to their content,\nwrap them in `<HtmlInCanvas>` and put the `effects` prop on the wrapper.\n\nFor example, apply an effect directly to a video:\n\n```tsx\nimport {Video} from '@remotion/media';\nimport {blur} from '@remotion/effects/blur';\n\n<Video\n  src=\"https://remotion.media/video.mp4\"\n  effects={[blur({radius: 8})]}\n/>;\n```\n\nUse the effect docs for exact props and imports. Most `@remotion/effects` imports use `@remotion/effects/<effect-slug>`; `uvTranslate()` and `xyTranslate()` use `@remotion/effects/translate`.\n\nMost effects use WebGL2; `cylinder()`, `sphere()`, and `pageTurn()` use WebGPU. During renders, enable WebGL and WebGPU with:\n\n```ts\nimport {Config} from '@remotion/cli/config';\n\nConfig.setChromiumOpenGlRenderer('angle');\n```\n\n## Available effects\n\nBuilt-in effects from `@remotion/effects`:\n\n- Color and tone: `brightness()`, `colorCorrection()`, `colorKey()`, `contrast()`, `curves()`, `duotone()`, `exposure()`, `grayscale()`, `hue()`, `invert()`, `levels()`, `linearGradient()`, `linearGradientTint()`, `lut()`, `saturation()`, `shadowsHighlights()`, `thermalVision()`, `tint()`, `vibrance()`, `whiteBalance()`.\n- Blur and trails: `blur()`, `lightTrail()`, `linearProgressiveBlur()`, `radialProgressiveBlur()`, `regionBlur()`, `zoomBlur()`.\n- Lighting: `dropShadow()`, `longShadows()`, `glow()`, `lightLeak()`, `shine()`, `starburst()`, `vignette()`.\n- Distortion and transforms: `barrelDistortion()`, `chromaticAberration()`, `cornerPin()`, `fisheye()`, `mirror()`, `noiseDisplacement()`, `scale()`, `skew()`, `tile()`, `uvTranslate()`, `wave()`, `xyTranslate()`.\n- Textures and patterns: `burlap()`, `checkerboard()`, `contourLines()`, `dotGrid()`, `emboss()`, `flannel()`, `gridlines()`, `halftone()`, `halftoneLinearGradient()`, `lines()`, `liquidContours()`, `noise()`, `paper()`, `pattern()`, `rings()`, `scanlines()`, `speckle()`, `tvSignalOff()`, `waves()`, `whiteNoise()`, `zigzag()`.\n- Edges: `outline()`, `roughenEdges()`, `shrinkwrap()`, `tear()`.\n- Pixelation and transitions: `evolve()`, `linearProgressivePixelate()`, `pixelate()`, `pixelDissolve()`, `radialProgressivePixelate()`, `venetianBlinds()`.\n\nExample:\n\n```tsx\nimport {Video} from '@remotion/media';\nimport {brightness} from '@remotion/effects/brightness';\n\n<Video\n  src=\"https://remotion.media/video.mp4\"\n  effects={[brightness({})]}\n/>;\n```\n\n## Custom effects\n\nUse `createEffect()` from `remotion` when the user wants a reusable effect factory that works in the same `effects` array as `@remotion/effects`.\n\nPrefer a custom effect over `<HtmlInCanvas onPaint>` when the transformation should be reusable, parameterized, editable in Studio, or stackable with other effects.\n\nFor quick project-specific effects, keep the effect next to the composition, for example `src/effects/palette-map.ts`. For library effects intended for `@remotion/effects`, follow the repository's `add-effect` skill instead.\n\n`createEffect()` expects:\n\n- `type`: stable reverse-DNS identifier, for example `com.example.paletteMap`.\n- `label`: Studio label, commonly `paletteMap()`.\n- `documentationLink`: URL or `null`.\n- `backend`: `\"2d\"`, `\"webgl2\"` or `\"webgpu\"`.\n- `calculateKey(params)`: stable string containing every resolved parameter that changes output.\n- `setup(target)`: create reusable backend state, or return `null`.\n- `apply({source, target, width, height, params, state, flipSourceY})`: draw the transformed result into `target`.\n- `cleanup(state)`: free resources created by `setup()`.\n- `schema`: an `InteractivitySchema` for Studio controls. `disabled` is added automatically.\n- `validateParams(params)`: throw on missing or invalid values.\n\nUse `backend: \"2d\"` for simple pixel, filter, drawImage, or image-data effects. Use WebGL2 only when shader math or GPU performance is needed; during renders, enable WebGL as shown above.\n\n```ts\nimport {createEffect, type InteractivitySchema} from 'remotion';\n\ntype MyEffectParams = {\n  readonly amount?: number;\n};\n\nconst myEffectSchema = {\n  amount: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    step: 0.01,\n    default: 1,\n    description: 'Amount',\n  },\n} as const satisfies InteractivitySchema;\n\nconst resolve = (params: MyEffectParams) => ({\n  amount: params.amount ?? 1,\n});\n\nexport const myEffect = createEffect<MyEffectParams, null>({\n  type: 'com.example.myEffect',\n  label: 'myEffect()',\n  documentationLink: null,\n  backend: '2d',\n  calculateKey: (params) => {\n    const {amount} = resolve(params);\n    return `my-effect-${amount}`;\n  },\n  setup: () => null,\n  apply: ({source, target, width, height, params}) => {\n    const ctx = target.getContext('2d');\n    if (!ctx) {\n      throw new Error('Could not get a 2D context for myEffect().');\n    }\n\n    const {amount} = resolve(params);\n\n    ctx.clearRect(0, 0, width, height);\n    ctx.filter = `opacity(${amount * 100}%)`;\n    ctx.drawImage(source, 0, 0, width, height);\n    ctx.filter = 'none';\n  },\n  cleanup: () => undefined,\n  schema: myEffectSchema,\n  validateParams: ({amount = 1}) => {\n    if (typeof amount !== 'number' || !Number.isFinite(amount) || amount < 0 || amount > 1) {\n      throw new TypeError('amount must be a number between 0 and 1');\n    }\n  },\n});\n```\n\nFor a WebGL2 effect, compile/link shaders in `setup()`, keep the program, fullscreen quad, texture, and uniform locations in state, upload `source` in `apply()`, and free GPU resources in `cleanup()`. Minimal shape:\n\n```ts\nimport {createEffect, type InteractivitySchema} from 'remotion';\n\ntype RgbShiftParams = {\n  readonly amount?: number;\n};\n\ntype RgbShiftState = {\n  readonly gl: WebGL2RenderingContext;\n  readonly program: WebGLProgram;\n  readonly vao: WebGLVertexArrayObject;\n  readonly vbo: WebGLBuffer;\n  readonly texture: WebGLTexture;\n  readonly uSource: WebGLUniformLocation | null;\n  readonly uOffset: WebGLUniformLocation | null;\n};\n\nconst rgbShiftSchema = {\n  amount: {\n    type: 'number',\n    min: 0,\n    max: 80,\n    step: 1,\n    default: 12,\n    description: 'Amount',\n  },\n} as const satisfies InteractivitySchema;\n\nexport const rgbShift = createEffect<RgbShiftParams, RgbShiftState>({\n  type: 'com.example.rgbShift',\n  label: 'rgbShift()',\n  documentationLink: null,\n  backend: 'webgl2',\n  calculateKey: ({amount = 12}) => `rgb-shift-${amount}`,\n  setup: (target) => {\n    const gl = target.getContext('webgl2', {\n      premultipliedAlpha: true,\n      alpha: true,\n      preserveDrawingBuffer: true,\n    });\n    if (!gl) {\n      throw new Error('Could not get a WebGL2 context for rgbShift().');\n    }\n\n    gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n\n    // Compile/link shaders, create a fullscreen quad VAO/VBO, create a\n    // CLAMP_TO_EDGE RGBA texture, and get uSource/uOffset uniform locations.\n    return createRgbShiftState(gl);\n  },\n  apply: ({source, width, height, params, state, flipSourceY}) => {\n    const amount = params.amount ?? 12;\n    const {gl} = state;\n\n    gl.viewport(0, 0, width, height);\n    gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);\n    gl.activeTexture(gl.TEXTURE0);\n    gl.bindTexture(gl.TEXTURE_2D, state.texture);\n    gl.texImage2D(\n      gl.TEXTURE_2D,\n      0,\n      gl.RGBA,\n      gl.RGBA,\n      gl.UNSIGNED_BYTE,\n      source as TexImageSource,\n    );\n\n    gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n    gl.useProgram(state.program);\n    if (state.uSource) gl.uniform1i(state.uSource, 0);\n    if (state.uOffset) gl.uniform2f(state.uOffset, amount / width, 0);\n    gl.bindVertexArray(state.vao);\n    gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n  },\n  cleanup: ({gl, program, vao, vbo, texture}) => {\n    gl.deleteTexture(texture);\n    gl.deleteBuffer(vbo);\n    gl.deleteProgram(program);\n    gl.deleteVertexArray(vao);\n  },\n  schema: rgbShiftSchema,\n  validateParams: ({amount = 12}) => {\n    if (typeof amount !== 'number' || !Number.isFinite(amount) || amount < 0 || amount > 80) {\n      throw new TypeError('amount must be a number between 0 and 80');\n    }\n  },\n});\n```\n\nFor a complete 2D and WebGL2 pair, see `packages/example/src/EffectsTestbed/sample-posterize-2d.ts` and `packages/example/src/EffectsTestbed/sample-rgb-shift-webgl.ts`.\n\nUse the returned factory in an `effects` array:\n\n```tsx\nimport {CanvasImage, staticFile} from 'remotion';\nimport {myEffect} from './effects/my-effect';\n\nexport const MyComp: React.FC = () => {\n  return (\n    <CanvasImage\n      src={staticFile('image.png')}\n      effects={[myEffect({amount: 0.8})]}\n    />\n  );\n};\n```\n\nWhen generating a custom effect, also:\n\n- Include `disabled?: boolean` only through the returned factory; do not add it to the custom params type or schema.\n- Validate required parameters at factory-call time with `validateParams`.\n- Include all defaults in both `schema` and the `resolve()` helper.\n- Reset mutable 2D context state such as `filter`, `globalAlpha`, transforms, and compositing after drawing.\n- Preserve alpha unless the requested effect intentionally changes transparency.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/effects.md"},{"path":"remotion-markup/embedding-videos.md","content":"---\nname: embedding-videos\ndescription: Embedding videos in Remotion - trimming, volume, speed, looping, pitch\nmetadata:\n  tags: video, media, trim, volume, speed, loop, pitch\n---\n\n# Using videos in Remotion\n\n## Prerequisites\n\nFirst, the @remotion/media package needs to be installed.  \nIf it is not, use the following command:\n\n```bash\nnpx remotion add @remotion/media # If project uses npm\nbunx remotion add @remotion/media # If project uses bun\nyarn remotion add @remotion/media # If project uses yarn\npnpm exec remotion add @remotion/media # If project uses pnpm\n```\n\nUse `<Video>` from `@remotion/media` to embed videos into your composition.\n\n```tsx\nimport { Video } from \"@remotion/media\";\nimport { staticFile } from \"remotion\";\n\nexport const MyComposition = () => {\n  return <Video src={staticFile(\"video.mp4\")} />;\n};\n```\n\nRemote URLs are also supported:\n\n```tsx\n<Video src=\"https://remotion.media/video.mp4\" />\n```\n\n## Trimming\n\nUse `trimBefore` to skip the beginning of the video and `durationInFrames` to end it early. Values are in frames.\n\n```tsx\nconst { fps } = useVideoConfig();\n\nreturn (\n  <Video\n    src={staticFile(\"video.mp4\")}\n    trimBefore={2 * fps} // Skip the first 2 seconds\n    durationInFrames={8 * fps} // Play 8 seconds, until the 10 second mark\n  />\n);\n```\n\n## Delaying\n\nSet `from` directly on `<Video>` to delay when it appears:\n\n```tsx\nimport { staticFile, useVideoConfig } from \"remotion\";\nimport { Video } from \"@remotion/media\";\n\nconst { fps } = useVideoConfig();\n\nreturn (\n  <Video from={fps} src={staticFile(\"video.mp4\")} />\n);\n```\n\nThe video will appear after 1 second.\n\n## Sizing and Position\n\nUse the `style` prop to control size and position:\n\n```tsx\n<Video\n  src={staticFile(\"video.mp4\")}\n  style={{\n    width: 500,\n    height: 300,\n    position: \"absolute\",\n    top: 100,\n    left: 50,\n  }}\n  objectFit=\"cover\"\n/>\n```\n\n## Volume\n\nSet a static volume (0 to 1):\n\n```tsx\n<Video src={staticFile(\"video.mp4\")} volume={0.5} />\n```\n\nUse `useCurrentFrame()` and `interpolate()` for keyframed volume:\n\n```tsx\nimport { Video } from \"@remotion/media\";\nimport { interpolate, staticFile, useCurrentFrame, useVideoConfig } from \"remotion\";\n\nconst frame = useCurrentFrame();\nconst { fps } = useVideoConfig();\n\nreturn (\n  <Video\n    src={staticFile(\"video.mp4\")}\n    volume={interpolate(frame, [0, 1 * fps], [0, 1], {\n      extrapolateLeft: \"clamp\",\n      extrapolateRight: \"clamp\",\n    })}\n  />\n);\n```\n\nWith Studio interactivity enabled, these keyframes can be edited and are shown as a volume curve in the timeline.\n\nUse `muted` to silence the video entirely:\n\n```tsx\n<Video src={staticFile(\"video.mp4\")} muted />\n```\n\n## Speed\n\nUse `playbackRate` to change the playback speed:\n\n```tsx\n// 2x speed\n<Video src={staticFile(\"video.mp4\")} playbackRate={2} />\n// Half speed\n<Video src={staticFile(\"video.mp4\")} playbackRate={0.5} />\n```\n\nReverse playback is not supported.\n\n## Looping\n\nUse `loop` to loop the video indefinitely:\n\n```tsx\n<Video src={staticFile(\"video.mp4\")} loop />\n```\n\n```tsx\nimport { Video } from \"@remotion/media\";\nimport { interpolate, staticFile, useCurrentFrame } from \"remotion\";\n\nconst frame = useCurrentFrame();\n\n<Video\n  src={staticFile(\"video.mp4\")}\n  loop\n  volume={interpolate(frame, [0, 300], [1, 0], {\n    extrapolateLeft: \"clamp\",\n    extrapolateRight: \"clamp\",\n  })}\n/>\n```\n\n## Pitch\n\nUse `toneFrequency` to adjust the pitch without affecting speed. Values range from 0.01 to 2:\n\n```tsx\n<Video\n  src={staticFile(\"video.mp4\")}\n  toneFrequency={1.5} // Higher pitch\n/>\n<Video\n  src={staticFile(\"video.mp4\")}\n  toneFrequency={0.8} // Lower pitch\n/>\n```\n\nPitch shifting only works during server-side rendering, not in the Remotion Studio preview or in the `<Player />`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/embedding-videos.md"},{"path":"remotion-markup/ffmpeg.md","content":"---\nname: ffmpeg\ndescription: Using FFmpeg and FFprobe in Remotion\nmetadata:\n  tags: ffmpeg, ffprobe, video, trimming\n---\n\n## FFmpeg in Remotion\n\n`ffmpeg` and `ffprobe` do not need to be installed. They are available via the `npx remotion ffmpeg` and `npx remotion ffprobe`:\n\n```bash\nnpx remotion ffmpeg -i input.mp4 output.mp3\nnpx remotion ffprobe input.mp4\n```\n\n### Trimming videos\n\nYou have 2 options for trimming videos:\n\n1. **Preferred**: Use the `trimBefore` and `durationInFrames` props of the `<Video>` component. This is non-destructive, requires no re-encoding, and you can change the trim at any time.\n\n```tsx\nimport {Video} from '@remotion/media';\n\n<Video\n  src={staticFile('video.mp4')}\n  trimBefore={5 * fps}\n  durationInFrames={5 * fps}\n/>;\n```\n\n2. Use the FFmpeg command line. You MUST re-encode the video to avoid frozen frames at the start of the video. Only use this if you need a standalone trimmed file (e.g. for upload or external use).\n\n```bash\n# Re-encodes from the exact frame\nnpx remotion ffmpeg -ss 00:00:05 -i public/input.mp4 -to 00:00:10 -c:v libx264 -c:a aac public/output.mp4\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/ffmpeg.md"},{"path":"remotion-markup/gifs.md","content":"---\nname: gif\ndescription: Displaying GIFs, APNG, AVIF and WebP in Remotion\nmetadata:\n  tags: gif, animation, images, animated, apng, avif, webp\n---\n\n# Using Animated images in Remotion\n\n## Basic usage\n\nUse `<AnimatedImage>` to display a GIF, APNG, AVIF or WebP image synchronized with Remotion's timeline:\n\n```tsx\nimport { AnimatedImage, staticFile } from \"remotion\";\n\nexport const MyComposition = () => {\n  return (\n    <AnimatedImage\n      src={staticFile(\"animation.gif\")}\n      width={500}\n      height={500}\n    />\n  );\n};\n```\n\nRemote URLs are also supported (must have CORS enabled):\n\n```tsx\n<AnimatedImage\n  src=\"https://example.com/animation.gif\"\n  width={500}\n  height={500}\n/>\n```\n\n## Sizing and fit\n\nControl how the image fills its container with the `fit` prop:\n\n```tsx\n// Stretch to fill (default)\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={300}\n  fit=\"fill\"\n/>\n\n// Maintain aspect ratio, fit inside container\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={300}\n  fit=\"contain\"\n/>\n\n// Fill container, crop if needed\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={300}\n  fit=\"cover\"\n/>\n```\n\n## Playback speed\n\nUse `playbackRate` to control the animation speed:\n\n```tsx\n// 2x speed\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={500}\n  playbackRate={2}\n/>\n// Half speed\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={500}\n  playbackRate={0.5}\n/>\n```\n\n## Looping behavior\n\nControl what happens when the animation finishes:\n\n```tsx\n// Loop indefinitely (default)\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={500}\n  loopBehavior=\"loop\"\n/>\n\n// Play once, show final frame\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={500}\n  loopBehavior=\"pause-after-finish\"\n/>\n\n// Play once, then clear canvas\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={500}\n  loopBehavior=\"clear-after-finish\"\n/>\n```\n\n## Styling\n\nUse the `style` prop for additional CSS (use `width` and `height` props for sizing):\n\n```tsx\n<AnimatedImage\n  src={staticFile(\"animation.gif\")}\n  width={500}\n  height={500}\n  style={{\n    borderRadius: 20,\n    position: \"absolute\",\n    top: 100,\n    left: 50,\n  }}\n/>\n```\n\n## Getting GIF duration\n\nUse `getGifDurationInSeconds()` from `@remotion/gif` to get the duration of a GIF.\n\n```bash\nnpx remotion add @remotion/gif\n```\n\n```tsx\nimport { getGifDurationInSeconds } from \"@remotion/gif\";\nimport { staticFile } from \"remotion\";\n\nconst duration = await getGifDurationInSeconds(staticFile(\"animation.gif\"));\nconsole.log(duration); // e.g. 2.5\n```\n\nThis is useful for setting the composition duration to match the GIF:\n\n```tsx\nimport { getGifDurationInSeconds } from \"@remotion/gif\";\nimport { staticFile, CalculateMetadataFunction } from \"remotion\";\n\nconst calculateMetadata: CalculateMetadataFunction = async () => {\n  const duration = await getGifDurationInSeconds(staticFile(\"animation.gif\"));\n  return {\n    durationInFrames: Math.ceil(duration * 30),\n  };\n};\n```\n\n## Alternative\n\nIf `<AnimatedImage>` does not work (only supported in Chrome and Firefox), you can use `<Gif>` from `@remotion/gif` instead.\n\n```bash\nnpx remotion add @remotion/gif # If project uses npm\nbunx remotion add @remotion/gif # If project uses bun\nyarn remotion add @remotion/gif # If project uses yarn\npnpm exec remotion add @remotion/gif # If project uses pnpm\n```\n\n```tsx\nimport { Gif } from \"@remotion/gif\";\nimport { staticFile } from \"remotion\";\n\nexport const MyComposition = () => {\n  return <Gif src={staticFile(\"animation.gif\")} width={500} height={500} />;\n};\n```\n\nThe `<Gif>` component has the same props as `<AnimatedImage>` but only supports GIF files.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/gifs.md"},{"path":"remotion-markup/google-fonts.md","content":"---\nname: fonts\ndescription: Loading Google Fonts and local fonts in Remotion\nmetadata:\n  tags: fonts, google-fonts, typography, text\n---\n\n# Using fonts in Remotion\n\n## Google Fonts with @remotion/google-fonts\n\nThe recommended way to use Google Fonts. It's type-safe and automatically blocks rendering until the font is ready.\n\n### Prerequisites\n\nFirst, the @remotion/google-fonts package needs to be installed.\nIf it is not installed, use the following command:\n\n```bash\nnpx remotion add @remotion/google-fonts # If project uses npm\nbunx remotion add @remotion/google-fonts # If project uses bun\nyarn remotion add @remotion/google-fonts # If project uses yarn\npnpm exec remotion add @remotion/google-fonts # If project uses pnpm\n```\n\n```tsx\nimport { loadFont } from \"@remotion/google-fonts/Lobster\";\n\nconst { fontFamily } = loadFont();\n\nexport const MyComposition = () => {\n  return (\n    <div style={{ fontFamily }}>\n      Hello World\n    </div>\n  );\n};\n```\n\nPreferrably, specify only needed weights and subsets to reduce file size:\n\n```tsx\nimport { loadFont } from \"@remotion/google-fonts/Roboto\";\n\nconst { fontFamily } = loadFont(\"normal\", {\n  weights: [\"400\", \"700\"],\n  subsets: [\"latin\"],\n});\n```\n\n## Using in components\n\nCall `loadFont()` at the top level of your component or in a separate file that's imported early:\n\n```tsx\nimport { loadFont } from \"@remotion/google-fonts/Montserrat\";\n\nconst { fontFamily } = loadFont(\"normal\", {\n  weights: [\"400\", \"700\"],\n  subsets: [\"latin\"],\n});\n\nexport const Title: React.FC<{ text: string }> = ({ text }) => {\n  return (\n    <h1\n      style={{\n        fontFamily,\n        fontSize: 80,\n        fontWeight: \"bold\",\n      }}\n    >\n      {text}\n    </h1>\n  );\n};\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/google-fonts.md"},{"path":"remotion-markup/html-in-canvas.md","content":"# Using `<HtmlInCanvas>` in Remotion\n\nRenders children into a `<canvas>` so you can post-process them with the Canvas 2D API or WebGL.\n\nOnly works in Chrome 149+ with the `chrome://flags/#canvas-draw-element` flag enabled.  \nGive the user a notice.\n\n## Nesting\n\nNest `<HtmlInCanvas>` components only when `HtmlInCanvas.isNestingSupported()` returns `true` (Chrome 157.0.8080.0 or newer with HTML-in-canvas enabled). Older browsers reject nesting.\n\n## Enabling WebGL during renders\n\nIf you make use of WebGL during renders, you need to enable it:\n\nFrom the CLI:\n\n```bash\nnpx remotion render --gl=angle\n```\n\nSet it as the default for Studio and CLI (advised):\n\n```ts\nimport { Config } from \"@remotion/cli/config\";\n\nConfig.setChromiumOpenGlRenderer(\"angle\");\n```\n\n## Basic usage\n\nBy default, draws to canvas with no effect applied:\n\n```tsx\nimport { HtmlInCanvas } from \"remotion\";\n\nexport const MyComp = () => {\n  return (\n    <HtmlInCanvas width={1280} height={720}>\n      <div style={{ fontSize: 80 }}>\n        Hello\n      </div>\n    </HtmlInCanvas>\n  );\n};\n```\n\n## 2D effect with `onPaint`\n\n`onPaint` runs whenever the content updates. Call `ctx.drawElementImage(elementImage, 0, 0)` to draw the captured DOM.\n\n```tsx\nimport {\n  AbsoluteFill,\n  HtmlInCanvas,\n  type HtmlInCanvasOnPaint,\n  useCurrentFrame,\n  useVideoConfig,\n} from \"remotion\";\nimport { useCallback } from \"react\";\n\nexport const Blur = () => {\n  const frame = useCurrentFrame();\n  const { width, height, fps } = useVideoConfig();\n\n  const onPaint: HtmlInCanvasOnPaint = useCallback(\n    ({ canvas, elementImage }) => {\n      const ctx = canvas.getContext(\"2d\");\n      if (!ctx) throw new Error(\"Failed to acquire 2D context\");\n\n      const blurPx = 4 + 18 * (0.5 + 0.5 * Math.sin((frame / fps) * Math.PI));\n\n      ctx.reset();\n      ctx.filter = `blur(${blurPx}px)`;\n      ctx.drawElementImage(elementImage, 0, 0);\n    },\n    [frame, fps],\n  );\n\n  return (\n    <HtmlInCanvas width={width} height={height} onPaint={onPaint}>\n      <AbsoluteFill\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          fontSize: 120,\n        }}\n      >\n        <h1>\n          Hello\n        </h1>\n      </AbsoluteFill>\n    </HtmlInCanvas>\n  );\n};\n```\n\n## WebGL effects\n\nFor WebGL, set up the context, program, and texture in `onInit` and return a cleanup function. Allocate the texture with `gl.texImage2D(..., null)` when `elementImage` changes size. Inside `onPaint`, upload with `gl.texElementSubImage2D(gl.TEXTURE_2D, 0, 0, 0, elementImage)` and draw. Older Chromium versions only expose `gl.texElementImage2D()`; use it when the new method is absent.\n\nFor a fully working minimal example, see https://github.com/remotion-dev/remotion/blob/main/packages/docs/components/demos/HtmlInCanvasDocsDemoWebGL.tsx.\n\n## Async `onPaint`\n\n`onPaint` may be `async`. Remotion holds the frame open via `delayRender()` until the promise resolves. Useful for multi-pass effects with `createImageBitmap`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/html-in-canvas.md"},{"path":"remotion-markup/images.md","content":"## Sizing and positioning\n\nUse the `style` prop to control size and position:\n\n```tsx\n<Img\n  src={staticFile(\"photo.png\")}\n  style={{\n    width: 500,\n    height: 300,\n    position: \"absolute\",\n    top: 100,\n    left: 50,\n    objectFit: \"cover\",\n  }}\n/>\n```\n\n## Dynamic image paths\n\nUse template literals for dynamic file references:\n\n```tsx\nimport { Img, staticFile, useCurrentFrame } from \"remotion\";\n\nconst frame = useCurrentFrame();\n\n// Image sequence\n<Img src={staticFile(`frames/frame${frame}.png`)} />\n\n// Selecting based on props\n<Img src={staticFile(`avatars/${props.userId}.png`)} />\n\n// Conditional images\n<Img\n  src={staticFile(`icons/${isActive ? \"active\" : \"inactive\"}.svg`)}\n/>\n```\n\nThis pattern is useful for:\n\n- Image sequences (frame-by-frame animations)\n- User-specific avatars or profile images\n- Theme-based icons\n- State-dependent graphics\n\n## Getting image dimensions\n\nUse `getImageDimensions()` from `@remotion/media-utils` to get the dimensions of an image:\n\n```tsx\nimport { getImageDimensions } from \"@remotion/media-utils\";\nimport { staticFile } from \"remotion\";\n\nconst { width, height } = await getImageDimensions(staticFile(\"photo.png\"));\n```\n\nThis is useful for calculating aspect ratios or sizing compositions:\n\n```tsx\nimport { getImageDimensions } from \"@remotion/media-utils\";\nimport { staticFile, CalculateMetadataFunction } from \"remotion\";\n\nconst calculateMetadata: CalculateMetadataFunction = async () => {\n  const { width, height } = await getImageDimensions(staticFile(\"photo.png\"));\n  return {\n    width,\n    height,\n  };\n};\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/images.md"},{"path":"remotion-markup/light-leaks.md","content":"---\nname: light-leaks\ndescription: Light leak overlay effects for Remotion using lightLeak() from @remotion/effects.\nmetadata:\n  tags: light-leaks, overlays, effects, transitions\n---\n\n## Light Leaks\n\nThis only works from Remotion 4.0.500 and up. Use `npx remotion versions` to check your Remotion version and `npx remotion upgrade` to upgrade your Remotion version.\n\nApply `lightLeak()` from `@remotion/effects/light-leak` to a canvas-based component such as `<Solid>`. Animate `progress` from `0` to `1`; the light leak reveals during the first half and retracts during the second half.\n\nTypically use it inside a `<TransitionSeries.Overlay>` to play over the cut point between two scenes. See the **transitions** rule for `<TransitionSeries>` and overlay usage.\n\n## Prerequisites\n\n```bash\nnpx remotion add @remotion/effects\n```\n\n## Light leak overlay component\n\nKeep the `progress` calculation inline so it is editable in Remotion Studio:\n\n```tsx\nimport {lightLeak} from '@remotion/effects/light-leak';\nimport {interpolate, Solid, useCurrentFrame, useVideoConfig} from 'remotion';\n\nconst LightLeakOverlay: React.FC<{\n  seed?: number;\n  hueShift?: number;\n}> = ({seed = 0, hueShift = 0}) => {\n  const frame = useCurrentFrame();\n  const {durationInFrames, height, width} = useVideoConfig();\n\n  return (\n    <Solid\n      width={width}\n      height={height}\n      effects={[\n        lightLeak({\n          seed,\n          hueShift,\n          progress: interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n            extrapolateLeft: 'clamp',\n            extrapolateRight: 'clamp',\n          }),\n        }),\n      ]}\n    />\n  );\n};\n```\n\n## Basic usage with TransitionSeries\n\n```tsx\nimport {TransitionSeries} from '@remotion/transitions';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={60}>\n    <SceneA />\n  </TransitionSeries.Sequence>\n  <TransitionSeries.Overlay durationInFrames={30}>\n    <LightLeakOverlay />\n  </TransitionSeries.Overlay>\n  <TransitionSeries.Sequence durationInFrames={60}>\n    <SceneB />\n  </TransitionSeries.Sequence>\n</TransitionSeries>;\n```\n\n## Options\n\n- `progress?` — controls the evolve/retract phase from `0` to `1`. Effects do not animate on their own, so drive it with `useCurrentFrame()` and `interpolate()`. Default: `0.5`.\n- `seed?` — determines the shape of the light leak pattern. Different seeds produce different patterns. Default: `0`.\n- `hueShift?` — rotates the hue in degrees (`0`–`360`). Default: `0` (yellow-to-orange). `120` = green, `240` = blue.\n- `disabled?` — skips the effect when `true`. Default: `false`.\n\n## Customizing the look\n\n```tsx\n// Blue-tinted light leak with a different pattern\n<LightLeakOverlay seed={5} hueShift={240} />;\n\n// Green-tinted light leak\n<LightLeakOverlay seed={2} hueShift={120} />;\n```\n\n## Standalone usage\n\nThe overlay component can also be used outside of `<TransitionSeries>` as a decorative layer in any composition:\n\n```tsx\nconst MyComp: React.FC = () => (\n  <>\n    <MyContent />\n    <LightLeakOverlay seed={3} />\n  </>\n);\n```\n\n`lightLeak()` uses WebGL2. Enable WebGL during rendering with `Config.setChromiumOpenGlRenderer(\"angle\")`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/light-leaks.md"},{"path":"remotion-markup/local-fonts.md","content":"For local font files, use the `@remotion/fonts` package.\n\n### Prerequisites\n\nFirst, install @remotion/fonts:\n\n```bash\nnpx remotion add @remotion/fonts # If project uses npm\nbunx remotion add @remotion/fonts # If project uses bun\nyarn remotion add @remotion/fonts # If project uses yarn\npnpm exec remotion add @remotion/fonts # If project uses pnpm\n```\n\n### Loading a local font\n\nPlace your font file in the `public/` folder and use `loadFont()`:\n\n```tsx\nimport { loadFont } from \"@remotion/fonts\";\nimport { staticFile } from \"remotion\";\n\nawait loadFont({\n  family: \"MyFont\",\n  url: staticFile(\"MyFont-Regular.woff2\"),\n});\n\nexport const MyComposition = () => {\n  return (\n    <div style={{ fontFamily: \"MyFont\" }}>\n      Hello World\n    </div>\n  );\n};\n```\n\n### Loading multiple weights\n\nLoad each weight separately with the same family name:\n\n```tsx\nimport { loadFont } from \"@remotion/fonts\";\nimport { staticFile } from \"remotion\";\n\nawait Promise.all([\n  loadFont({\n    family: \"Inter\",\n    url: staticFile(\"Inter-Regular.woff2\"),\n    weight: \"400\",\n  }),\n  loadFont({\n    family: \"Inter\",\n    url: staticFile(\"Inter-Bold.woff2\"),\n    weight: \"700\",\n  }),\n]);\n```\n\n### Available options\n\n```tsx\nloadFont({\n  family: \"MyFont\", // Required: name to use in CSS\n  url: staticFile(\"font.woff2\"), // Required: font file URL\n  format: \"woff2\", // Optional: auto-detected from extension\n  weight: \"400\", // Optional: font weight\n  style: \"normal\", // Optional: normal or italic\n  display: \"block\", // Optional: font-display behavior\n});\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/local-fonts.md"},{"path":"remotion-markup/lottie.md","content":"---\nname: lottie\ndescription: Embedding Lottie animations in Remotion.\nmetadata:\n  category: Animation\n---\n\n# Using Lottie Animations in Remotion\n\n## Prerequisites\n\nFirst, the @remotion/lottie package needs to be installed.  \nIf it is not, use the following command:\n\n```bash\nnpx remotion add @remotion/lottie # If project uses npm\nbunx remotion add @remotion/lottie # If project uses bun\nyarn remotion add @remotion/lottie # If project uses yarn\npnpm exec remotion add @remotion/lottie # If project uses pnpm\n```\n\n## Displaying a Lottie file\n\nTo import a Lottie animation:\n\n- Fetch the Lottie asset\n- Wrap the loading process in `delayRender()` and `continueRender()`\n- Save the animation data in a state\n- Render the Lottie animation using the `Lottie` component from the `@remotion/lottie` package\n\n```tsx\nimport { Lottie, LottieAnimationData } from \"@remotion/lottie\";\nimport { useEffect, useState } from \"react\";\nimport { cancelRender, continueRender, delayRender } from \"remotion\";\n\nexport const MyAnimation = () => {\n  const [handle] = useState(() => delayRender(\"Loading Lottie animation\"));\n\n  const [animationData, setAnimationData] =\n    useState<LottieAnimationData | null>(null);\n\n  useEffect(() => {\n    fetch(\"https://assets4.lottiefiles.com/packages/lf20_zyquagfl.json\")\n      .then((data) => data.json())\n      .then((json) => {\n        setAnimationData(json);\n        continueRender(handle);\n      })\n      .catch((err) => {\n        cancelRender(err);\n      });\n  }, [handle]);\n\n  if (!animationData) {\n    return null;\n  }\n\n  return <Lottie animationData={animationData} />;\n};\n```\n\n## Styling and animating\n\nLottie supports the `style` prop to allow styles and animations:\n\n```tsx\nreturn (\n  <Lottie\n    animationData={animationData}\n    style={{ width: 400, height: 400 }}\n  />\n);\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/lottie.md"},{"path":"remotion-markup/measuring-dom-nodes.md","content":"---\nname: measuring-dom-nodes\ndescription: Measuring DOM element dimensions in Remotion\nmetadata:\n  tags: measure, layout, dimensions, getBoundingClientRect, scale\n---\n\n# Measuring DOM nodes in Remotion\n\nRemotion applies a `scale()` transform to the video container, which affects values from `getBoundingClientRect()`. Use `useCurrentScale()` to get correct measurements.\n\n## Measuring element dimensions\n\n```tsx\nimport { useCurrentScale } from \"remotion\";\nimport { useRef, useEffect, useState } from \"react\";\n\nexport const MyComponent = () => {\n  const ref = useRef<HTMLDivElement>(null);\n  const scale = useCurrentScale();\n  const [dimensions, setDimensions] = useState({ width: 0, height: 0 });\n\n  useEffect(() => {\n    if (!ref.current) return;\n    const rect = ref.current.getBoundingClientRect();\n    setDimensions({\n      width: rect.width / scale,\n      height: rect.height / scale,\n    });\n  }, [scale]);\n\n  return (\n    <div ref={ref}>\n      Content to measure\n    </div>\n  );\n};\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md"},{"path":"remotion-markup/measuring-text.md","content":"---\nname: measuring-text\ndescription: Measuring text dimensions, fitting text to containers, and checking overflow\nmetadata:\n  tags: measure, text, layout, dimensions, fitText, fillTextBox\n---\n\n# Measuring text in Remotion\n\n## Prerequisites\n\nInstall @remotion/layout-utils if it is not already installed:\n\n```bash\nnpx remotion add @remotion/layout-utils\n```\n\n## Measuring text dimensions\n\nUse `measureText()` to calculate the width and height of text:\n\n```tsx\nimport { measureText } from \"@remotion/layout-utils\";\n\nconst { width, height } = measureText({\n  text: \"Hello World\",\n  fontFamily: \"Arial\",\n  fontSize: 32,\n  fontWeight: \"bold\",\n});\n```\n\nResults are cached - duplicate calls return the cached result.\n\n## Fitting text to a width\n\nUse `fitText()` to find the optimal font size for a container:\n\n```tsx\nimport { fitText } from \"@remotion/layout-utils\";\n\nconst { fontSize } = fitText({\n  text: \"Hello World\",\n  withinWidth: 600,\n  fontFamily: \"Inter\",\n  fontWeight: \"bold\",\n});\n\nreturn (\n  <div\n    style={{\n      fontSize: Math.min(fontSize, 80), // Cap at 80px\n      fontFamily: \"Inter\",\n      fontWeight: \"bold\",\n    }}\n  >\n    Hello World\n  </div>\n);\n```\n\n## Checking text overflow\n\nUse `fillTextBox()` to check if text exceeds a box:\n\n```tsx\nimport { fillTextBox } from \"@remotion/layout-utils\";\n\nconst box = fillTextBox({ maxBoxWidth: 400, maxLines: 3 });\n\nconst words = [\"Hello\", \"World\", \"This\", \"is\", \"a\", \"test\"];\nfor (const word of words) {\n  const { exceedsBox } = box.add({\n    text: word + \" \",\n    fontFamily: \"Arial\",\n    fontSize: 24,\n  });\n  if (exceedsBox) {\n    // Text would overflow, handle accordingly\n    break;\n  }\n}\n```\n\n## Best practices\n\n**Load fonts first:** Only call measurement functions after fonts are loaded.\n\n```tsx\nimport { loadFont } from \"@remotion/google-fonts/Inter\";\n\nconst { fontFamily, waitUntilDone } = loadFont(\"normal\", {\n  weights: [\"400\"],\n  subsets: [\"latin\"],\n});\n\nwaitUntilDone().then(() => {\n  // Now safe to measure\n  const { width } = measureText({\n    text: \"Hello\",\n    fontFamily,\n    fontSize: 32,\n  });\n});\n```\n\n**Use validateFontIsLoaded:** Catch font loading issues early:\n\n```tsx\nmeasureText({\n  text: \"Hello\",\n  fontFamily: \"MyCustomFont\",\n  fontSize: 32,\n  validateFontIsLoaded: true, // Throws if font not loaded\n});\n```\n\n**Match font properties:** Use the same properties for measurement and rendering:\n\n```tsx\nconst fontStyle = {\n  fontFamily: \"Inter\",\n  fontSize: 32,\n  fontWeight: \"bold\" as const,\n  letterSpacing: \"0.5px\",\n};\n\nconst { width } = measureText({\n  text: \"Hello\",\n  ...fontStyle,\n});\n\nreturn (\n  <div style={fontStyle}>\n    Hello\n  </div>\n);\n```\n\n**Avoid padding and border:** Use `outline` instead of `border` to prevent layout differences:\n\n```tsx\n<div style={{ outline: \"2px solid red\" }}>\n  Text\n</div>\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/measuring-text.md"},{"path":"remotion-markup/motion-blur.md","content":"# Motion blur\n\nUse `@remotion/motion-blur` for frame-driven motion blur.  \nInstall it with `npx remotion add @remotion/motion-blur`.\n\n`<HtmlInCanvasMotionBlur>` is the state of the art in Remotion for blurring animated HTML. It captures the content at fractional frames and averages its pixels in a canvas.\n\n## `<HtmlInCanvasMotionBlur>`\n\nAvailable from Remotion 4.0.529.  \nSupply the canvas `width` and `height`, usually from `useVideoConfig()`.  \n`shutterAngle` defaults to `180` and accepts `0` to `360`.\n`0` disables blur. `samples` defaults to `8` and must be an integer from `1` to `64`. More samples can smooth the blur but increase preview and render cost.\n\nCall `useCurrentFrame()` inside the child component so each sample receives its own frame.\n\n```tsx\nimport {\n  HtmlInCanvasMotionBlur,\n} from '@remotion/motion-blur';\nimport {useCurrentFrame, useVideoConfig} from 'remotion';\n\nconst MovingBox = () => {\n  const frame = useCurrentFrame();\n  return (\n    <div\n      style={{\n        position: 'absolute',\n        left: frame * 10,\n        top: 200,\n        width: 120,\n        height: 120,\n        backgroundColor: '#ff6b6b',\n      }}\n    />\n  );\n};\n\nexport const HtmlInCanvasBlur = () => {\n  const {width, height} = useVideoConfig();\n\n  return (\n    <HtmlInCanvasMotionBlur\n      width={width}\n      height={height}\n      samples={8}\n      shutterAngle={180}\n    >\n      <MovingBox />\n    </HtmlInCanvasMotionBlur>\n  );\n};\n```\n\nFor live preview, enable HTML-in-canvas in Chrome 149 or later with `chrome://flags/#canvas-draw-element`.  \nNo configuration for rendering is necessary.\n\nNest `<HtmlInCanvas>` or `<HtmlInCanvasMotionBlur>` components only when `HtmlInCanvas.isNestingSupported()` returns `true` (Chrome 157.0.8080.0 or newer with HTML-in-canvas enabled).\n\nIf HTML-in-canvas is unavailable, see the [motion blur guide](https://www.remotion.dev/docs/motion-blur) for other options. See the [`<HtmlInCanvasMotionBlur>` reference](https://www.remotion.dev/docs/motion-blur/html-in-canvas-motion-blur) for API details.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/motion-blur.md"},{"path":"remotion-markup/multi-scene-video.md","content":"# Multi-scene videos\n\nGive each substantial scene its own component and connect it when it benefits\nfrom an independent editing timeline. Keep each instance's name, timing, and\nprops inline in the parent.\n\nChoose the parent structure from the editing behavior:\n\n- For independent scene start times, use a named `Track` with explicit `from`\n  and `durationInFrames` on each scene. Its items must not overlap.\n- For scenes that should remain adjacent as their durations change, use\n  `TransitionSeries`. Keep each scene inside its own\n  `TransitionSeries.Sequence`, with duration and source trim on that boundary.\n  Add transitions when needed and account for their overlaps in the total\n  composition duration.\n\nFollow [editable timeline structure](../remotion-interactivity/timeline-structure.md)\nfor a complete scene, parent, and registration example. See\n[transitions](transitions.md) for transition timing and presentations, and\n[connected compositions](connected-compositions.md) for extraction and\nverification in the full video.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/multi-scene-video.md"},{"path":"remotion-markup/parameters.md","content":"---\nname: parameters\ndescription: Make a video parametrizable by adding a Zod schema\nmetadata:\n  tags: parameters, zod, schema\n---\n\nTo make a video parametrizable, a Zod schema can be added to a composition.\n\nFirst, `zod` must be installed .\n\nSearch the project for lockfiles and run the correct command depending on the package manager:\n\nIf `package-lock.json` is found, use the following command:\n\n```bash\nnpm i zod\n```\n\nIf `bun.lockb` is found, use the following command:\n\n```bash\nbun i zod\n```\n\nIf `yarn.lock` is found, use the following command:\n\n```bash\nyarn add zod\n```\n\nIf `pnpm-lock.yaml` is found, use the following command:\n\n```bash\npnpm i zod\n```\n\nThen, a Zod schema can be defined alongside the component:\n\n```tsx title=\"src/MyComposition.tsx\"\nimport { z } from \"zod\";\n\nexport const MyCompositionSchema = z.object({\n  title: z.string(),\n});\n\nconst MyComponent: React.FC<z.infer<typeof MyCompositionSchema>> = () => {\n  return (\n    <div>\n      <h1>\n        {props.title}\n      </h1>\n    </div>\n  );\n};\n```\n\nIn the root file, the schema can be passed to the composition:\n\n```tsx title=\"src/Root.tsx\"\nimport { Composition } from \"remotion\";\nimport { MycComponent, MyCompositionSchema } from \"./MyComposition\";\n\nexport const RemotionRoot = () => {\n  return (\n    <Composition\n      id=\"MyComposition\"\n      component={MyComponent}\n      durationInFrames={100}\n      fps={30}\n      width={1080}\n      height={1080}\n      defaultProps={{ title: \"Hello World\" }}\n      schema={MyCompositionSchema}\n    />\n  );\n};\n```\n\nNow, the user can edit the parameter visually in the sidebar.\n\nAll schemas that are supported by Zod are supported by Remotion.\n\nRemotion requires that the top-level type is a z.object(), because the collection of props of a React component is always an object.\n\n## Color picker\n\nFor adding a color picker, use `zColor()` from `@remotion/zod-types`.\n\nIf it is not installed, use the following command:\n\n```bash\nnpx remotion add @remotion/zod-types # If project uses npm\nbunx remotion add @remotion/zod-types # If project uses bun\nyarn remotion add @remotion/zod-types # If project uses yarn\npnpm exec remotion add @remotion/zod-types # If project uses pnpm\n```\n\nThen import `zColor` from `@remotion/zod-types`:\n\n```tsx\nimport { zColor } from \"@remotion/zod-types\";\n```\n\nThen use it in the schema:\n\n```tsx\nexport const MyCompositionSchema = z.object({\n  color: zColor(),\n});\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/parameters.md"},{"path":"remotion-markup/REFERENCE.md","content":"---\nname: remotion-markup\ndescription: Content, animation and effects best practices\nversion: 4.0.540\n---\n\nThis is guidance for writing Remotion React Markup.\nIf this is not relevant, load [Remotion Best Practices](../SKILL.md) instead.\n\n## Preserve user changes\n\nUsers may make edits in the code outside of the conversation.\n\nIf you detect a surprising change made in the meanwhile, don't overwrite it, assume it was intentional or ask for confirmation.\n\n## General rules\n\nKeep `useCurrentFrame()` in the smallest component that needs it. Extract\nframe-dependent audio volume, titles, and overlays into their own components\ninstead of subscribing the whole composition or scene; otherwise unrelated\ndescendants re-render on every frame. Preserve the existing frame coordinates\nwhen extracting across timing boundaries, and keep editable interpolations\ninline on the item's props.\n\nInside a composition or scene component, get `fps` from `useVideoConfig()` for\nall seconds-to-frames calculations, including timing props such as `from`,\n`trimBefore` and `durationInFrames`. Keeping the expression on\nthe JSX node, such as `trimBefore={4 * fps}`, lets Studio edit the timing and\nkeeps it correct if the composition frame rate changes.\n\nDrive animations using `useCurrentFrame()` and `interpolate()`.  \nCSS `transition` or `animation` will not render correctly, they need to refactored.  \nTailwind animation class will not render correctly, they need to be refactored.\n\nUse `Easing.bezier()` and `Easing.spring()` to customize timing.\n\nBefore choosing the markup hierarchy, read\n[editable timeline structure](../remotion-interactivity/timeline-structure.md).\nChoose editing units first, then the tracks or shared timing boundaries they\nneed. It includes a complete example with interactive components and their\nregistrations. For source-editable styles, schemas, and keyframes, see\n[Remotion Interactivity](../remotion-interactivity/REFERENCE.md).\n\n```tsx\nimport { useCurrentFrame, useVideoConfig, Easing, interpolate, Interactive } from \"remotion\";\n\nexport const FadeIn = () => {\n  const frame = useCurrentFrame();\n  const {fps} = useVideoConfig();\n\n  return (\n    <Interactive.Div\n      name=\"Title\"\n      style={{\n        opacity: interpolate(frame, [0, 2 * fps], [0, 1], {\n          extrapolateRight: \"clamp\",\n          extrapolateLeft: \"clamp\",\n          easing: Easing.bezier(0.16, 1, 0.3, 1),\n        }),\n      }}\n    >\n      Hello World!\n    </Interactive.Div>\n  );\n};\n```\n\nKeep the `interpolate()` call inline in the `style` prop.\nUse `scale`, `translate`, `rotate` CSS properties over `transform`.\n\n```tsx\n// 👍 Inline editable keyframes and transform shorthands\nstyle={{\n  scale: interpolate(frame, [0, 100], [0, 1], {\n    extrapolateLeft: 'clamp',\n    extrapolateRight: 'clamp',\n    easing: Easing.spring({damping: 200}),\n    output: 'perceptual-scale' // For `scale` animations, use \"output: 'perceptual-scale'\"\n  }),\n  translate: interpolate(frame, [0, 100], [\"0px 0px\", \"100px 100px\"], {\n    extrapolateLeft: 'clamp',\n    extrapolateRight: 'clamp',\n    easing: Easing.spring({damping: 200}),\n  }),\n  rotate: interpolate(frame, [0, 100], [\"20deg\", \"90deg\"], {\n    extrapolateLeft: 'clamp',\n    extrapolateRight: 'clamp',\n    easing: Easing.spring({damping: 200}),\n  }),\n}}\n\n// 👎 Non-inline values and transform strings become harder to edit in Studio\nconst scale = interpolate(frame, [0, 100], [0, 1]);\n\nstyle={{\n  transform: `scale(${scale})`,\n}}\n```\n\n## Assets\n\nPlace assets in the `public/` folder at your project root.\nUse `staticFile()` to reference files from the `public/` folder.\n\n## Media components\n\nAdd video and audio using `<Video>` and `<Audio>` from `@remotion/media`.  \nAdd images using the `<CanvasImage>` component.\nAdd animated GIFs, APNG, WebP or AVIF images using `<AnimatedImage>`, use `@remotion/gif` if not using Chrome.\nUse `staticFile()` for files in `public/` or pass a remote URL directly:\n\n```tsx\nimport { Audio, Video } from \"@remotion/media\";\nimport { staticFile, CanvasImage, AnimatedImage } from \"remotion\";\n\nexport const MyComposition = () => {\n  return (\n    <>\n      <Video src={staticFile(\"video.mp4\")} style={{ opacity: 0.5 }} />\n      <Audio src={staticFile(\"audio.mp3\")} />\n      <CanvasImage\n        src={staticFile(\"logo.png\")}\n        style={{ width: 100, height: 100 }}\n      />\n      <Video src=\"https://remotion.media/video.mp4\" />\n      <AnimatedImage src={staticFile('nyancat.gif')} />\n    </>\n  );\n};\n```\n\nIf the composition is primarily a timeline of video or audio clips, read\n[video-editing.md](video-editing.md) before choosing its source structure.\n\n## Delaying, trimming\n\nUse [sequencing](sequencing.md) to choose the timing boundary and\n[timing props](timing-props.md) for the supported props and order of operations.\n\n## Maps\n\nSee [Remotion Maps](./remotion-maps/REFERENCE.md) if wanting to include maps in the video.\n\n## Text highlights and annotations\n\nSee [text-highlights.md](text-highlights.md) for text highlights (highlight markers), circles, underlines, strike-throughs, crossed-off text, boxes.\n\n## Multi-scene videos\n\nSee [multi-scene-video.md](multi-scene-video.md) if planning to make a video with multiple subsequent scenes.\n\n## Connected compositions\n\nRead [connected compositions](connected-compositions.md) when a scene or group\nneeds its own editable timeline, or when handling a Studio pre-compose request.\nIt covers extraction, registration, inherited styles, and verification in both\nthe parent and standalone views.\n\n## Voiceover\n\nSee [voiceover.md](voiceover.md) for adding an AI-generated voiceover to Remotion compositions using ElevenLabs TTS.\n\n## Embedding Videos\n\nSee [embedding-videos.md](embedding-videos.md) for advanced knowledge about embedding videos - trimming, volume, speed, looping, pitch.\n\n## Embedding Audio\n\nSee [audio.md](audio.md) for advanced audio features like trimming, volume, speed, pitch.\n\n## Cropping\n\nSee [cropping.md](cropping.md) if needing to crop the visible rectangle of a component.\n\n## Transitions\n\nSee [transitions.md](transitions.md) for scene transition patterns.\n\n## Motion blur\n\nWhen adding motion blur or a movement trail, read [motion-blur.md](motion-blur.md) for the preferred HTML-in-canvas approach, preview requirements, and alternatives.\n\n## Visual and pixel effects\n\nWhen adding a visual effect, first identify the element or group it should affect.\nIf the target component supports `effects` and a built-in effect below matches the\nrequest, prefer that effect over a CSS approximation. For example, apply\n`vignette()` directly to a `<Video>`'s `effects` prop when the vignette should\naffect that video.\n\nThese components accept `effects` directly:\n\n| Import from        | Components                                                                                                                    |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------------- |\n| `remotion`         | `<Img>`, `<CanvasImage>`, `<AnimatedImage>`, `<Solid>`, `<HtmlInCanvas>`                                                      |\n| `@remotion/media`  | `<Video>`                                                                                                                     |\n| `@remotion/gif`    | `<Gif>`                                                                                                                       |\n| `@remotion/rive`   | `<RemotionRiveCanvas>`                                                                                                        |\n| `@remotion/shapes` | `<Arrow>`, `<Callout>`, `<Circle>`, `<Ellipse>`, `<Heart>`, `<Pie>`, `<Polygon>`, `<Rect>`, `<Spark>`, `<Star>`, `<Triangle>` |\n\nOrdinary HTML elements, `<Interactive.*>` DOM wrappers, `<AbsoluteFill>`, and\n`<Sequence>` do not accept `effects` directly. To apply effects to their content,\nwrap them in `<HtmlInCanvas>` and put the `effects` prop on the wrapper.\n\nFor other elements, prefer regular HTML and CSS where suitable. Consider wrapping\na group in [`<HtmlInCanvas>`](html-in-canvas.md) when post-processing the whole\ngroup is appropriate and the environment supports it.\n\nRead [effects.md](effects.md) before applying an effect for imports, parameters,\nand setup. It also covers reusable custom effects with `createEffect()` when no\nbuilt-in effect matches.\n\n### Available effects\n\nBuilt-in effects from `@remotion/effects`:\n\n- Color and tone: `brightness()`, `colorCorrection()`, `colorKey()`, `contrast()`, `curves()`, `duotone()`, `exposure()`, `grayscale()`, `hue()`, `invert()`, `levels()`, `linearGradient()`, `linearGradientTint()`, `lut()`, `saturation()`, `shadowsHighlights()`, `thermalVision()`, `tint()`, `vibrance()`, `whiteBalance()`.\n- Blur and trails: `blur()`, `lightTrail()`, `linearProgressiveBlur()`, `radialProgressiveBlur()`, `regionBlur()`, `zoomBlur()`.\n- Lighting: `dropShadow()`, `longShadows()`, `glow()`, `lightLeak()`, `shine()`, `starburst()`, `vignette()`.\n- Distortion and transforms: `barrelDistortion()`, `chromaticAberration()`, `cornerPin()`, `fisheye()`, `mirror()`, `noiseDisplacement()`, `scale()`, `skew()`, `tile()`, `uvTranslate()`, `wave()`, `xyTranslate()`.\n- Textures and patterns: `burlap()`, `checkerboard()`, `contourLines()`, `dotGrid()`, `emboss()`, `flannel()`, `gridlines()`, `halftone()`, `halftoneLinearGradient()`, `lines()`, `liquidContours()`, `noise()`, `paper()`, `pattern()`, `rings()`, `scanlines()`, `speckle()`, `tvSignalOff()`, `waves()`, `whiteNoise()`, `zigzag()`.\n- Edges: `outline()`, `roughenEdges()`, `shrinkwrap()`, `tear()`.\n- Pixelation and transitions: `evolve()`, `linearProgressivePixelate()`, `pixelate()`, `pixelDissolve()`, `radialProgressivePixelate()`, `venetianBlinds()`.\n\n## Color correction\n\nRead [color-correction.md](color-correction.md) for primary adjustments with\n`colorCorrection()`, tonal mapping with `levels()` or `curves()`, their Studio\neditors, and 3D `.cube` color grades with `lut()`.\n\n## 3D content\n\nSee [./3d.md](./3d.md) for 3D content in Remotion using Three.js and React Three Fiber.\n\n## Sound effects\n\nWhen needing to use sound effects, load the [./sfx.md](./sfx.md) file for more information.\n\n## Audio visualization\n\nWhen needing to visualize audio (spectrum bars, waveforms, bass-reactive effects), load the [./audio-visualization.md](./audio-visualization.md) file for more information.\n\n## Maps\n\nFor static maps, animated routes and markers, geographic explainers, Mapbox, MapLibre, MapTiler, GeoJSON, or 3D geographic flyovers, load [Remotion Maps](./remotion-maps/REFERENCE.md).\n\n## Captions\n\nWhen dealing with captions or subtitles, load the [Remotion Captions](../remotion-captions/REFERENCE.md) skill for more information.\n\n## Arabic and right-to-left text\n\nFor Arabic, Persian, Urdu or Hebrew text, read [arabic-text.md](arabic-text.md): set the base direction, animate by word, and split letters only in a way that keeps them joined.\n\n## Google Fonts\n\nIs the recommended way to load fonts in Remotion. See [google-fonts.md](google-fonts.md) for how to load Google Fonts.\n\n## Local fonts\n\nSee [local-fonts.md](local-fonts.md) for how to load local fonts.\n\n## GIFs\n\nSee [gifs.md](gifs.md) for how to display GIFs synchronized with Remotion's timeline.\n\n## Advanced Images\n\nSee [images.md](images.md) for sizing and positioning images, dynamic image paths, and getting image dimensions.\n\n## Lottie animations\n\nSee [lottie.md](lottie.md) for embedding Lottie animations in Remotion.\n\n## Timing\n\nSee [timing.md](timing.md) for more timing techniques for `interpolate()`.\n\n## Parameterized videos\n\nSee [parameters.md](parameters.md) for making a composition parametrizable by adding a Zod schema.\n\n## Measuring DOM nodes\n\nSee [measuring-dom-nodes.md](measuring-dom-nodes.md) for measuring DOM element dimensions in Remotion.\n\n## Measuring text\n\nSee [measuring-text.md](measuring-text.md) for measuring text dimensions, fitting text to containers, and checking overflow.\n\n## Using FFmpeg\n\nFor some video operations, such as trimming videos or detecting silence, FFmpeg should be used. Load the [./ffmpeg.md](./ffmpeg.md) file for more information.\n\n## Silence detection\n\nWhen needing to detect and trim silent segments from video or audio files, load the [./silence-detection.md](./silence-detection.md) file.\n\n## Dynamic duration, dimensions and data\n\nSee [calculate-metadata.md](calculate-metadata.md) for dynamically set composition duration, dimensions, and props.\n\n## Compositions and stills\n\nBefore registering `<Composition>` or `<Still>` elements, read [compositions.md](compositions.md) for source-editable registrations, folders, default props and nesting. For Studio navigation into a scene's own timeline, use [connected compositions](connected-compositions.md).\n\n## Advanced sequencing\n\nSee [sequencing.md](sequencing.md) for more sequencing patterns - delay, trim, limit duration of items.\n\n## Install modules\n\nUse `npx remotion add` to add new packages with the right version:\n\n```\nnpx remotion add @remotion/media\n```\n\nThis goes for `@remotion/*` packages, `mediabunny`, `@mediabunny/*`, `zod`, and `@huggingface/transformers`.\n\n## Visual checks\n\nOpen the [Remotion Studio](../remotion-studio/REFERENCE.md) to check visual changes.\nWhen changing timeline structure, inspect the full composition as well as any\nconnected components; verify the visible layers, cut timing, and synchronized\ncontent.\n\nYou can also use [Rendering](../remotion-render/REFERENCE.md) to inspect one or several frames as images.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/REFERENCE.md"},{"path":"remotion-markup/remotion-maps/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-maps'\n  short_description: 'Create animated maps in Remotion videos'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-maps: Animate a dot from Zurich to New York.'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml"},{"path":"remotion-markup/remotion-maps/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.svg"},{"path":"remotion-markup/remotion-maps/REFERENCE.md","content":"---\nname: remotion-maps\ndescription: Remotion Map animation knowledge\nversion: 4.0.540\n---\n\n# Remotion Maps\n\nChoose exactly one technique from the intended shot, then load only that technique's `TECHNIQUE.md`.\nEvery technique directory is self-contained and may be removed without breaking the others.\n\n## [Static map](techniques/static-map/TECHNIQUE.md)\n\n- Requires you grab a satellite image and mount it in a `<Img>` tag, and animate on top\n\n## [Mapbox](techniques/mapbox/TECHNIQUE.md)\n\n- Requires a Mapbox key\n- Nicer styles by default\n- Map can display a round globe when zoomed out\n- Includes nice 3D buildings such as the Eiffel tower\n\n## [MapLibre](techniques/maplibre/TECHNIQUE.md)\n\n- Requires no API key, fully free\n- Does not include 3D building\n\n## [MapTiler](techniques/maptiler/TECHNIQUE.md)\n\n- Uses MapTiler\n- Annotations can be drawn on top of geographic features: borders, rivers, labels\n\n## [CesiumJS](techniques/cesium/TECHNIQUE.md)\n\n- Flythroughs through terrain and mountains\n- \"Flight simulator\" perspective\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md"},{"path":"remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json","content":"[\n\t[94.986139893537, 29.76417312959953],\n\t[94.98637054463002, 29.764163024004816],\n\t[94.98661427422437, 29.764153025681516],\n\t[94.9868698103708, 29.764142908388347],\n\t[94.98713600736019, 29.764132461562934],\n\t[94.98741179569139, 29.76412145291623],\n\t[94.9876962466277, 29.764109663422126],\n\t[94.98798853462426, 29.764096898390772],\n\t[94.98828790834106, 29.764082995679242],\n\t[94.98859364523021, 29.764067827511347],\n\t[94.98890509685035, 29.764051279216236],\n\t[94.98922167960325, 29.76403324759024],\n\t[94.98954294512464, 29.76401367774424],\n\t[94.9898685550894, 29.76399255290906],\n\t[94.99019820264337, 29.76396985787546],\n\t[94.9905316178847, 29.763945606334815],\n\t[94.9908685732739, 29.763919866576575],\n\t[94.99120886105722, 29.763892700951896],\n\t[94.99155229116181, 29.7638641665054],\n\t[94.99189872300363, 29.76383429811986],\n\t[94.99224811692223, 29.763803085651237],\n\t[94.99260053337049, 29.763770509641105],\n\t[94.99295601118384, 29.76373658086857],\n\t[94.99331456742908, 29.763701322339223],\n\t[94.99367598745215, 29.763664830647013],\n\t[94.99404000156176, 29.763627219082974],\n\t[94.99440635968021, 29.763588592698778],\n\t[94.99477481502787, 29.76354905236459],\n\t[94.9951451006731, 29.763508748648892],\n\t[94.99578766204738, 29.763462125646818],\n\t[94.99643710580968, 29.763412119743368],\n\t[94.99709296623192, 29.763358988682928],\n\t[94.99775479298779, 29.763302979031952],\n\t[94.99842214521965, 29.763244327404465],\n\t[94.99909470569231, 29.763183258547627],\n\t[94.9997722961385, 29.76312010454948],\n\t[95.00045474013422, 29.763055184243758],\n\t[95.00114189582168, 29.762988795623112],\n\t[95.00183368970049, 29.762921207778405],\n\t[95.0025300799095, 29.76285270023514],\n\t[95.00323103443773, 29.762783549665084],\n\t[95.00393658318124, 29.76271400155497],\n\t[95.00464681949704, 29.76264432424487],\n\t[95.00536183331896, 29.76257477740286],\n\t[95.00608171146906, 29.762505612813378],\n\t[95.00680653793428, 29.762437075077955],\n\t[95.00753639864557, 29.762369398844733],\n\t[95.00827137837749, 29.762302811854063],\n\t[95.00901153006761, 29.762237519590354],\n\t[95.00975680776318, 29.76217368790719],\n\t[95.01050716875933, 29.762111478518566],\n\t[95.0112626067996, 29.76205102042169],\n\t[95.01202312290016, 29.761992432502932],\n\t[95.01278871942189, 29.76193583156792],\n\t[95.01355940108247, 29.761881333165324],\n\t[95.01433525277555, 29.761829093407865],\n\t[95.01511636205572, 29.761779224166457],\n\t[95.01590278872715, 29.76173180995877],\n\t[95.0166868810408, 29.76168612055982],\n\t[95.01746871725406, 29.761642332250204],\n\t[95.0182483756254, 29.76160062131038],\n\t[95.01902596675926, 29.761561177619345],\n\t[95.019801682618, 29.761524238306453],\n\t[95.02057570378254, 29.76149004865798],\n\t[95.02134818878243, 29.761458838563573],\n\t[95.02211921065114, 29.761430763930672],\n\t[95.02288888930805, 29.761405973069504],\n\t[95.02365734467304, 29.761384614290225],\n\t[95.02442469666667, 29.761366835902948],\n\t[95.02519095257038, 29.761352731197437],\n\t[95.02595602043016, 29.761342344990513],\n\t[95.02671980829304, 29.761335722099044],\n\t[95.02748221022355, 29.76133286485609],\n\t[95.02824308111781, 29.761333684556867],\n\t[95.02900227020879, 29.761338090875398],\n\t[95.02975960629327, 29.76134599002589],\n\t[95.03051480114966, 29.76135728786741],\n\t[95.03126749207338, 29.761371921751238],\n\t[95.03201723576402, 29.761389829130785],\n\t[95.03276363398774, 29.761410893146387],\n\t[95.03350632277824, 29.761434973117545],\n\t[95.03424521675927, 29.76146183394706],\n\t[95.03498037607913, 29.761491215377145],\n\t[95.035711917426, 29.761522866578012],\n\t[95.03643998610582, 29.761556530192124],\n\t[95.03716475930274, 29.761591886465347],\n\t[95.03788653744915, 29.761628566185358],\n\t[95.03860571883365, 29.76166618469001],\n\t[95.03932258585421, 29.76170436456548],\n\t[95.04003738892985, 29.76174273062808],\n\t[95.04075025083816, 29.76178094997509],\n\t[95.0414610559133, 29.76181870813213],\n\t[95.04216961904287, 29.761855638407084],\n\t[95.04287591713418, 29.761891331889718],\n\t[95.04357986124926, 29.761925397709096],\n\t[95.04428137757625, 29.761957488479126],\n\t[95.04498041854592, 29.76198725048925],\n\t[95.04567682817188, 29.762014317811357],\n\t[95.04637032968634, 29.762038376323694],\n\t[95.04706059416637, 29.762059099770216],\n\t[95.04774726432963, 29.762076162373777],\n\t[95.0484300050609, 29.762089241174117],\n\t[95.04910871445378, 29.762098042845082],\n\t[95.04978328153793, 29.762102280852183],\n\t[95.05045359964508, 29.76210167552205],\n\t[95.05111966253706, 29.76209602004179],\n\t[95.05178153406797, 29.762085106891018],\n\t[95.05243927503516, 29.762068731547185],\n\t[95.05309287649075, 29.762046750046103],\n\t[95.0537422946664, 29.762019099359485],\n\t[95.05438748396233, 29.761985721609257],\n\t[95.05502839823626, 29.76194655859307],\n\t[95.05566488201883, 29.761901557942874],\n\t[95.05629656919591, 29.761850805510885],\n\t[95.05692313234233, 29.761794428680094],\n\t[95.0575442743842, 29.761732580860688],\n\t[95.0581596433054, 29.761665348138973],\n\t[95.05876888708963, 29.761592816601354],\n\t[95.05937164047754, 29.761515065256333],\n\t[95.05996759228947, 29.761432144038746],\n\t[95.06055643134583, 29.761344102883623],\n\t[95.06113793491645, 29.761251010034922],\n\t[95.06171214230999, 29.761153046649387],\n\t[95.06227907948092, 29.761050389948267],\n\t[95.06283877238438, 29.760943217152814],\n\t[95.06339127381165, 29.760831691663462],\n\t[95.06393669678933, 29.760716002374487],\n\t[95.06447520396281, 29.76059636241658],\n\t[95.06500695797821, 29.760472984920362],\n\t[95.06553212847378, 29.760346104258282],\n\t[95.0660508986937, 29.760216015040477],\n\t[95.06656344194985, 29.760083025494016],\n\t[95.06707002648291, 29.75994741412334],\n\t[95.06757112978441, 29.759809440866206],\n\t[95.06806722979658, 29.759669344181514],\n\t[95.06855878142073, 29.759527354008487],\n\t[95.06904617625263, 29.759383697903765],\n\t[95.06952978875404, 29.75923861533451],\n\t[95.07000993080214, 29.759092371156385],\n\t[95.07048679175114, 29.758945227682446],\n\t[95.07096044787545, 29.75879742836973],\n\t[95.07143096114058, 29.758649219939148],\n\t[95.0718984144853, 29.758500858117706],\n\t[95.07236278188816, 29.7583525823887],\n\t[95.07282412506945, 29.758204644682806],\n\t[95.07328275575983, 29.75805728963777],\n\t[95.07373905641253, 29.757910760813612],\n\t[95.07419366476313, 29.757765217208473],\n\t[95.07464735762416, 29.757620800921966],\n\t[95.07510085345471, 29.757477677507868],\n\t[95.07555467766437, 29.757336168750566],\n\t[95.07600940811365, 29.757196598118206],\n\t[95.07646537399586, 29.75705931280275],\n\t[95.0769228207089, 29.756924677394206],\n\t[95.07738220221682, 29.756793075496777],\n\t[95.07784401968648, 29.75666487927172],\n\t[95.07830874492939, 29.756540496044202],\n\t[95.07877690647402, 29.756420332181715],\n\t[95.07924898851259, 29.75630478841808],\n\t[95.07972503722137, 29.756194196891926],\n\t[95.08020511490892, 29.756088882533362],\n\t[95.0806891403115, 29.75598918720403],\n\t[95.08117690920173, 29.75589531641115],\n\t[95.08166835685006, 29.755807414283098],\n\t[95.08216335868525, 29.75572566824862],\n\t[95.08266177736347, 29.755650250535062],\n\t[95.08316349491537, 29.75558120546187],\n\t[95.08366839703267, 29.755518567048284],\n\t[95.08417639041532, 29.75546236367944],\n\t[95.08468755179344, 29.755412571989652],\n\t[95.08520236790308, 29.755369015997044],\n\t[95.08572134650697, 29.75533148313236],\n\t[95.0862450098908, 29.755299740305322],\n\t[95.08677390781156, 29.75527358808779],\n\t[95.08730861289804, 29.755252808551163],\n\t[95.08784970300886, 29.755237175354623],\n\t[95.08839755885471, 29.755226476280296],\n\t[95.08895256438073, 29.755220494902016],\n\t[95.089514993805, 29.755219019351184],\n\t[95.09008489086116, 29.7552217729881],\n\t[95.09066229928165, 29.75522847917293],\n\t[95.09124726342738, 29.755238870403907],\n\t[95.09183976966378, 29.755252726598844],\n\t[95.09243978867215, 29.75526985018834],\n\t[95.09304723439128, 29.755290065097345],\n\t[95.09366184648091, 29.75531326126932],\n\t[95.09428337414857, 29.755339326723966],\n\t[95.09491171647382, 29.755368102171502],\n\t[95.09554680939114, 29.75539940595205],\n\t[95.09618846028675, 29.755433126230766],\n\t[95.09683632409143, 29.75546923335011],\n\t[95.09749004228215, 29.75550775219342],\n\t[95.09814924669702, 29.755548754655436],\n\t[95.0988136358514, 29.755592374644042],\n\t[95.09948290826172, 29.755638746066982],\n\t[95.1001568080277, 29.75568798494813],\n\t[95.10083517891061, 29.75574017449467],\n\t[95.10151797539464, 29.75579531974171],\n\t[95.1022051519645, 29.755853425724286],\n\t[95.10289664375364, 29.755914488290983],\n\t[95.10359258928374, 29.755978570204803],\n\t[95.10429306658138, 29.756045742645284],\n\t[95.10499798654989, 29.756116067070348],\n\t[95.10570717321444, 29.75618958016383],\n\t[95.10642032295875, 29.75626636089044],\n\t[95.10713711848761, 29.756346492746122],\n\t[95.10785729025027, 29.75643004436662],\n\t[95.10858043622838, 29.75651688160893],\n\t[95.10930611534633, 29.75660684892344],\n\t[95.11003407093642, 29.756699686157475],\n\t[95.11076414467685, 29.756795123665622],\n\t[95.1114960914754, 29.756892893838618],\n\t[95.11222971288655, 29.756992700238396],\n\t[95.1129649452222, 29.75709420093414],\n\t[95.11370170201873, 29.75719709582746],\n\t[95.11443986012442, 29.757301125099488],\n\t[95.11517935555177, 29.7574061249826],\n\t[95.11592009761476, 29.757511940391662],\n\t[95.11666232015585, 29.75761835330566],\n\t[95.11740624233691, 29.757725222810585],\n\t[95.11815181076378, 29.75783253698326],\n\t[95.11889913308254, 29.757940178669305],\n\t[95.11964841222917, 29.758048000558695],\n\t[95.12039993276164, 29.758155854652614],\n\t[95.12115399312397, 29.75826357999786],\n\t[95.1219108497459, 29.75837102690515],\n\t[95.1226706293697, 29.758478081829693],\n\t[95.12343325561484, 29.758584686897258],\n\t[95.12419857627997, 29.758690818430438],\n\t[95.12496638982559, 29.75879646083105],\n\t[95.12573649209446, 29.7589015818837],\n\t[95.12650863318528, 29.75900618637391],\n\t[95.12728253192327, 29.759110282431784],\n\t[95.12805798566751, 29.75921386162033],\n\t[95.12883477913662, 29.759316919371038],\n\t[95.12961273528985, 29.759419445656786],\n\t[95.13039166301432, 29.759521458216526],\n\t[95.13117134363408, 29.759622963323043],\n\t[95.13195155721434, 29.759723948972997],\n\t[95.13273211930314, 29.759824349786275],\n\t[95.13351286507051, 29.759924061406032],\n\t[95.13428648274362, 29.76002351015658],\n\t[95.1350533298064, 29.760122544307915],\n\t[95.1358137532818, 29.760221010686855],\n\t[95.13656784419986, 29.760318809952974],\n\t[95.13731567503761, 29.76041584848236],\n\t[95.1380573752464, 29.760511990985425],\n\t[95.13879310931623, 29.76060704815151],\n\t[95.13952306473344, 29.760700794123938],\n\t[95.14024751710419, 29.7607929520901],\n\t[95.14096671686433, 29.760883206230545],\n\t[95.14168092332761, 29.76097123202995],\n\t[95.14239029599311, 29.761056732470486],\n\t[95.14309486625548, 29.761139484506582],\n\t[95.14379454089128, 29.761219462160696],\n\t[95.14448922306659, 29.76129664046317],\n\t[95.14517882147311, 29.76137100941381],\n\t[95.14586312132259, 29.761442532574584],\n\t[95.14654188135431, 29.761511168945386],\n\t[95.14721489938523, 29.761576901934955],\n\t[95.14788204807155, 29.761639772673718],\n\t[95.14854319868547, 29.76169982923195],\n\t[95.14919822095698, 29.761757127412878],\n\t[95.14984699116548, 29.76181173598209],\n\t[95.15048960377052, 29.761863851723042],\n\t[95.15112617637942, 29.761913696049017],\n\t[95.15175681293137, 29.761961561816054],\n\t[95.15238148064795, 29.762007691856205],\n\t[95.15300009096235, 29.762052309028526],\n\t[95.1533539374323, 29.762086082676035],\n\t[95.15370650809008, 29.762118928860186],\n\t[95.15405759583123, 29.762150875711065],\n\t[95.15440704121897, 29.76218191319173],\n\t[95.1547548321985, 29.762211967913583],\n\t[95.15510097264206, 29.762240955288657],\n\t[95.15544525415498, 29.762268829619945],\n\t[95.15578751039571, 29.76229553455492],\n\t[95.15612769998111, 29.762320941845203],\n\t[95.15646565712565, 29.762344985615734],\n\t[95.156801142589, 29.76236761294652],\n\t[95.1571338046714, 29.76238883654028],\n\t[95.15746323934037, 29.76240869370805],\n\t[95.15778903282519, 29.762427217766984],\n\t[95.15811077257146, 29.762444433666733],\n\t[95.15842800577592, 29.762460368791256],\n\t[95.15874028837707, 29.76247502889767],\n\t[95.15904716834646, 29.76248842410003],\n\t[95.1593481499996, 29.762500590502704],\n\t[95.15964271930007, 29.76251153961251],\n\t[95.1599303416933, 29.76252129267978],\n\t[95.16021045104225, 29.762529892932115],\n\t[95.16048243037355, 29.762537389252305],\n\t[95.16074559672008, 29.762543832974302],\n\t[95.1609993202866, 29.762549265122786],\n\t[95.16124294069552, 29.762553753099137],\n\t[95.16147571071544, 29.762557390653928],\n\t[95.16169677155058, 29.762560323342807]\n]\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json"},{"path":"remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","content":"import React, {useEffect, useMemo, useRef, useState} from 'react';\nimport {\n\tAbsoluteFill,\n\tcancelRender,\n\tcontinueRender,\n\tdelayRender,\n\tuseCurrentFrame,\n\tuseVideoConfig,\n} from 'remotion';\nimport terrainPath from './cesium-path.json';\nimport {smoothFlightPath, type LngLat} from './flight-path';\n\nexport type FlyoverMode = 'landscape' | 'city';\nexport type {LngLat} from './flight-path';\n\nexport type CesiumFlythroughProps = {\n\tmode?: FlyoverMode;\n\tpath?: LngLat[];\n\tpathSmoothingPasses?: number;\n\taltitudeStart?: number;\n\taltitudeEnd?: number;\n\tlookAheadKm?: number;\n\ttravelKm?: number;\n\tpitchFromNadir?: number;\n\tverticalExaggeration?: number;\n\tmaximumScreenSpaceError?: number;\n};\n\nconst MAPTILER_KEY = process.env.REMOTION_MAPTILER_KEY;\nconst GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;\nconst CESIUM_VER = '1.143';\nconst CDN = `https://cesium.com/downloads/cesiumjs/releases/${CESIUM_VER}/Build/Cesium/`;\nconst R = 6371;\nconst MAX_BANK = 0.13;\nconst BANK_GAIN = 0.6;\n\nconst havKm = (a: number[], b: number[]) => {\n\tconst r = Math.PI / 180;\n\tconst dLat = (b[1] - a[1]) * r;\n\tconst dLng = (b[0] - a[0]) * r;\n\tconst h =\n\t\tMath.sin(dLat / 2) ** 2 +\n\t\tMath.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;\n\treturn 2 * R * Math.asin(Math.sqrt(h));\n};\n\nconst makePathWalker = (path: LngLat[]) => {\n\tif (path.length < 2)\n\t\tthrow new Error('Flyover path needs at least two points');\n\tconst cumulative = [0];\n\tfor (let i = 1; i < path.length; i++) {\n\t\tcumulative.push(cumulative[i - 1] + havKm(path[i - 1], path[i]));\n\t}\n\tconst lengthKm = cumulative[cumulative.length - 1];\n\tconst along = (km: number): LngLat => {\n\t\tconst d = Math.max(0, Math.min(lengthKm, km));\n\t\tlet i = 1;\n\t\twhile (i < cumulative.length && cumulative[i] < d) i++;\n\t\tif (i >= cumulative.length) return path[path.length - 1];\n\t\tconst segmentLength = cumulative[i] - cumulative[i - 1] || 1;\n\t\tconst t = (d - cumulative[i - 1]) / segmentLength;\n\t\treturn [\n\t\t\tpath[i - 1][0] + (path[i][0] - path[i - 1][0]) * t,\n\t\t\tpath[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,\n\t\t];\n\t};\n\treturn {along, lengthKm};\n};\n\nconst bearing = (a: number[], b: number[]) => {\n\tconst r = Math.PI / 180;\n\tconst y = Math.sin((b[0] - a[0]) * r) * Math.cos(b[1] * r);\n\tconst x =\n\t\tMath.cos(a[1] * r) * Math.sin(b[1] * r) -\n\t\tMath.sin(a[1] * r) * Math.cos(b[1] * r) * Math.cos((b[0] - a[0]) * r);\n\treturn Math.atan2(y, x);\n};\n\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\nconst clamp = (v: number, lo: number, hi: number) =>\n\tMath.max(lo, Math.min(hi, v));\n\nconst loadCesium = () =>\n\tnew Promise<any>((resolve, reject) => {\n\t\tif ((window as any).Cesium) return resolve((window as any).Cesium);\n\t\t(window as any).CESIUM_BASE_URL = CDN;\n\t\tconst css = document.createElement('link');\n\t\tcss.rel = 'stylesheet';\n\t\tcss.href = `${CDN}Widgets/widgets.css`;\n\t\tdocument.head.appendChild(css);\n\t\tconst script = document.createElement('script');\n\t\tscript.src = `${CDN}Cesium.js`;\n\t\tscript.onload = () => resolve((window as any).Cesium);\n\t\tscript.onerror = () =>\n\t\t\treject(new Error(`Failed to load CesiumJS ${CESIUM_VER}`));\n\t\tdocument.head.appendChild(script);\n\t});\n\nexport const CesiumFlythrough: React.FC<CesiumFlythroughProps> = ({\n\tmode = 'landscape',\n\tpath = terrainPath as LngLat[],\n\tpathSmoothingPasses = 3,\n\taltitudeStart = 4600,\n\taltitudeEnd = 4300,\n\tlookAheadKm = 1.5,\n\ttravelKm = 13,\n\tpitchFromNadir = 76,\n\tverticalExaggeration = 1.1,\n\tmaximumScreenSpaceError = 8,\n}) => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst started = useRef(false);\n\tconst viewerRef = useRef<any>(null);\n\tconst tilesetRef = useRef<any>(null);\n\tconst frame = useCurrentFrame();\n\tconst {durationInFrames, fps, width, height} = useVideoConfig();\n\tconst [ready, setReady] = useState(false);\n\tconst [handle] = useState(() =>\n\t\tdelayRender(`cesium init: ${mode}`, {timeoutInMilliseconds: 120000}),\n\t);\n\tconst walker = useMemo(\n\t\t() => makePathWalker(smoothFlightPath(path, pathSmoothingPasses)),\n\t\t[path, pathSmoothingPasses],\n\t);\n\n\tconst setCamera = (C: any, viewer: any, progress: number) => {\n\t\tconst maxTravel = Math.max(0, walker.lengthKm - lookAheadKm * 2);\n\t\tconst cameraDistance = Math.min(travelKm, maxTravel) * progress;\n\t\tconst camera = walker.along(cameraDistance);\n\t\tconst aim = walker.along(cameraDistance + lookAheadKm);\n\t\tconst aim2 = walker.along(cameraDistance + lookAheadKm * 2);\n\t\tconst heading = bearing(camera, aim);\n\t\tlet headingDelta = bearing(aim, aim2) - heading;\n\t\twhile (headingDelta > Math.PI) headingDelta -= 2 * Math.PI;\n\t\twhile (headingDelta < -Math.PI) headingDelta += 2 * Math.PI;\n\t\tviewer.camera.setView({\n\t\t\tdestination: C.Cartesian3.fromDegrees(\n\t\t\t\tcamera[0],\n\t\t\t\tcamera[1],\n\t\t\t\tlerp(altitudeStart, altitudeEnd, progress),\n\t\t\t),\n\t\t\torientation: {\n\t\t\t\theading,\n\t\t\t\tpitch: C.Math.toRadians(-(90 - pitchFromNadir)),\n\t\t\t\troll: clamp(headingDelta * BANK_GAIN, -MAX_BANK, MAX_BANK),\n\t\t\t},\n\t\t});\n\t};\n\n\tconst tilesAreLoaded = (viewer: any) => {\n\t\tif (mode === 'landscape') return viewer.scene.globe.tilesLoaded;\n\t\treturn Boolean(tilesetRef.current?.tilesLoaded);\n\t};\n\n\tconst settle = (viewer: any) =>\n\t\tnew Promise<void>((resolve) => {\n\t\t\tlet stable = 0;\n\t\t\tlet ticks = 0;\n\t\t\tconst tick = () => {\n\t\t\t\tviewer.render();\n\t\t\t\tticks++;\n\t\t\t\tstable = tilesAreLoaded(viewer) ? stable + 1 : 0;\n\t\t\t\tif (stable > 8 || ticks > 600) {\n\t\t\t\t\tviewer.render();\n\t\t\t\t\tresolve();\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(tick, 8);\n\t\t\t\t}\n\t\t\t};\n\t\t\ttick();\n\t\t});\n\n\tuseEffect(() => {\n\t\tif (started.current) return;\n\t\tstarted.current = true;\n\t\t(async () => {\n\t\t\tif (mode === 'landscape' && !MAPTILER_KEY) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set REMOTION_MAPTILER_KEY. Create a key at https://cloud.maptiler.com/account/keys/',\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (mode === 'city' && !GOOGLE_MAPS_API_KEY) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set REMOTION_GOOGLE_MAPS_API_KEY. Create a Map Tiles API key at https://developers.google.com/maps/documentation/tile/get-api-key',\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (mode === 'city' && durationInFrames / fps > 30) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Google Photorealistic 3D Tiles compositions must not exceed 30 seconds',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst C = await loadCesium();\n\t\t\tconst viewer = new C.Viewer(containerRef.current, {\n\t\t\t\tbaseLayer: false,\n\t\t\t\tbaseLayerPicker: false,\n\t\t\t\tgeocoder: false,\n\t\t\t\thomeButton: false,\n\t\t\t\tsceneModePicker: false,\n\t\t\t\tnavigationHelpButton: false,\n\t\t\t\tanimation: false,\n\t\t\t\ttimeline: false,\n\t\t\t\tfullscreenButton: false,\n\t\t\t\tinfoBox: false,\n\t\t\t\tselectionIndicator: false,\n\t\t\t\tcontextOptions: {webgl: {preserveDrawingBuffer: true}},\n\t\t\t});\n\t\t\tif (mode === 'landscape') {\n\t\t\t\tviewer.imageryLayers.addImageryProvider(\n\t\t\t\t\tnew C.UrlTemplateImageryProvider({\n\t\t\t\t\t\turl: `https://api.maptiler.com/tiles/satellite-v2/{z}/{x}/{y}.jpg?key=${MAPTILER_KEY}`,\n\t\t\t\t\t\tmaximumLevel: 20,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tviewer.terrainProvider = await C.CesiumTerrainProvider.fromUrl(\n\t\t\t\t\t`https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/?key=${MAPTILER_KEY}`,\n\t\t\t\t\t{requestVertexNormals: true},\n\t\t\t\t);\n\t\t\t\tviewer.creditDisplay.addStaticCredit(\n\t\t\t\t\tnew C.Credit(\n\t\t\t\t\t\t'<a href=\"https://www.maptiler.com/copyright/\" target=\"_blank\">&copy; MapTiler</a>',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (mode === 'city') {\n\t\t\t\tviewer.scene.globe.show = false;\n\t\t\t\tconst tileset = await C.Cesium3DTileset.fromUrl(\n\t\t\t\t\t`https://tile.googleapis.com/v1/3dtiles/root.json?key=${GOOGLE_MAPS_API_KEY}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tshowCreditsOnScreen: true,\n\t\t\t\t\t\tmaximumScreenSpaceError,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tviewer.scene.primitives.add(tileset);\n\t\t\t\ttilesetRef.current = tileset;\n\t\t\t}\n\n\t\t\tviewer.useDefaultRenderLoop = false;\n\t\t\tviewer.scene.skyAtmosphere.show = true;\n\t\t\tviewer.scene.fog.enabled = true;\n\t\t\tviewer.scene.globe.enableLighting = false;\n\t\t\tviewer.scene.verticalExaggeration = verticalExaggeration;\n\t\t\t(window as any).__CESIUM_FLYOVER__ = {C, mode};\n\t\t\tviewerRef.current = viewer;\n\t\t\tsetCamera(C, viewer, 0);\n\t\t\tawait settle(viewer);\n\t\t\tsetReady(true);\n\t\t\tcontinueRender(handle);\n\t\t})().catch((error) => cancelRender(error));\n\t}, [durationInFrames, fps, handle, mode]);\n\n\tuseEffect(() => {\n\t\tif (!ready) return;\n\t\tconst frameHandle = delayRender(`cesium ${mode} frame ${frame}`, {\n\t\t\ttimeoutInMilliseconds: 60000,\n\t\t});\n\t\tconst C = (window as any).__CESIUM_FLYOVER__.C;\n\t\tconst viewer = viewerRef.current;\n\t\tconst progress = durationInFrames <= 1 ? 0 : frame / (durationInFrames - 1);\n\t\tsetCamera(C, viewer, progress);\n\t\tsettle(viewer).then(() => continueRender(frameHandle));\n\t}, [ready, frame, durationInFrames, mode]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: '#000'}}>\n\t\t\t<div ref={containerRef} style={{width, height, position: 'absolute'}} />\n\t\t\t{mode === 'city' ? (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 20,\n\t\t\t\t\t\tright: 24,\n\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\tfont: '500 18px/1.2 sans-serif',\n\t\t\t\t\t\ttextShadow: '0 1px 4px black',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tFor promotional purposes only\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</AbsoluteFill>\n\t);\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx"},{"path":"remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json","content":"[\n\t[-74.0135, 40.7047],\n\t[-74.0102, 40.7104],\n\t[-74.0074, 40.7167],\n\t[-74.0047, 40.7232],\n\t[-74.0017, 40.7297],\n\t[-73.9988, 40.7362],\n\t[-73.9954, 40.7429],\n\t[-73.9917, 40.7496],\n\t[-73.9882, 40.7563],\n\t[-73.9848, 40.7631]\n]\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json"},{"path":"remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx","content":"import React from 'react';\nimport {Composition} from 'remotion';\nimport {CesiumFlythrough, type CesiumFlythroughProps} from './CesiumFlythrough';\nimport cityPath from './city-path.json';\n\nexport const RemotionRoot: React.FC = () => (\n\t<>\n\t\t<Composition\n\t\t\tid=\"LandscapeFlyover\"\n\t\t\tcomponent={CesiumFlythrough}\n\t\t\tdefaultProps={{mode: 'landscape'} satisfies CesiumFlythroughProps}\n\t\t\tdurationInFrames={24 * 30}\n\t\t\tfps={30}\n\t\t\twidth={1920}\n\t\t\theight={1080}\n\t\t/>\n\t\t<Composition\n\t\t\tid=\"CityFlyover\"\n\t\t\tcomponent={CesiumFlythrough}\n\t\t\tdefaultProps={\n\t\t\t\t{\n\t\t\t\t\tmode: 'city',\n\t\t\t\t\tpath: cityPath as [number, number][],\n\t\t\t\t\taltitudeStart: 700,\n\t\t\t\t\taltitudeEnd: 500,\n\t\t\t\t\tlookAheadKm: 0.7,\n\t\t\t\t\ttravelKm: 4.5,\n\t\t\t\t\tpitchFromNadir: 72,\n\t\t\t\t\tverticalExaggeration: 1,\n\t\t\t\t\tmaximumScreenSpaceError: 6,\n\t\t\t\t} satisfies CesiumFlythroughProps\n\t\t\t}\n\t\t\tdurationInFrames={18 * 30}\n\t\t\tfps={30}\n\t\t\twidth={1920}\n\t\t\theight={1080}\n\t\t/>\n\t</>\n);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx"},{"path":"remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts","content":"export type LngLat = [number, number];\n\n// Chaikin corner cutting turns a sparse route into a continuous curve. Repeated passes round\n// direction changes into deliberate swerves instead of left-right heading bumps.\nexport const smoothFlightPath = (source: LngLat[], passes = 3): LngLat[] => {\n\tif (source.length < 2)\n\t\tthrow new Error('Flyover path needs at least two points');\n\n\t// Keep adjacent longitudes continuous for routes that cross the antimeridian.\n\tconst unwrapped: LngLat[] = [source[0]];\n\tfor (let index = 1; index < source.length; index++) {\n\t\tconst [lng, lat] = source[index];\n\t\tconst previous = unwrapped[index - 1][0];\n\t\tlet adjusted = lng;\n\t\twhile (adjusted - previous > 180) adjusted -= 360;\n\t\twhile (adjusted - previous < -180) adjusted += 360;\n\t\tunwrapped.push([adjusted, lat]);\n\t}\n\n\tlet curve = unwrapped;\n\tfor (let pass = 0; pass < Math.max(0, passes); pass++) {\n\t\tconst next: LngLat[] = [curve[0]];\n\t\tfor (let i = 0; i < curve.length - 1; i++) {\n\t\t\tconst a = curve[i];\n\t\t\tconst b = curve[i + 1];\n\t\t\tnext.push(\n\t\t\t\t[a[0] * 0.75 + b[0] * 0.25, a[1] * 0.75 + b[1] * 0.25],\n\t\t\t\t[a[0] * 0.25 + b[0] * 0.75, a[1] * 0.25 + b[1] * 0.75],\n\t\t\t);\n\t\t}\n\t\tnext.push(curve[curve.length - 1]);\n\t\tcurve = next;\n\t}\n\treturn curve;\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts"},{"path":"remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson","content":"{\n\t\"type\": \"FeatureCollection\",\n\t\"features\": [\n\t\t{\n\t\t\t\"type\": \"Feature\",\n\t\t\t\"properties\": {\"name\": \"Yarlung Tsangpo (OSM, gorge way)\"},\n\t\t\t\"geometry\": {\n\t\t\t\t\"type\": \"LineString\",\n\t\t\t\t\"coordinates\": [\n\t\t\t\t\t[94.8794306, 29.5453548],\n\t\t\t\t\t[94.880058, 29.5500259],\n\t\t\t\t\t[94.8804545, 29.5529773],\n\t\t\t\t\t[94.8872806, 29.559007],\n\t\t\t\t\t[94.8902386, 29.5645817],\n\t\t\t\t\t[94.8945618, 29.5651505],\n\t\t\t\t\t[94.8985437, 29.5703839],\n\t\t\t\t\t[94.8978611, 29.5758448],\n\t\t\t\t\t[94.9077237, 29.5843086],\n\t\t\t\t\t[94.9107706, 29.5872382],\n\t\t\t\t\t[94.9136749, 29.5879042],\n\t\t\t\t\t[94.9208424, 29.5864253],\n\t\t\t\t\t[94.9243692, 29.5890419],\n\t\t\t\t\t[94.9243692, 29.5945028],\n\t\t\t\t\t[94.9268508, 29.597544],\n\t\t\t\t\t[94.9331942, 29.6000111],\n\t\t\t\t\t[94.9350913, 29.6024165],\n\t\t\t\t\t[94.9359736, 29.6042869],\n\t\t\t\t\t[94.9354367, 29.6064452],\n\t\t\t\t\t[94.9350634, 29.608155],\n\t\t\t\t\t[94.9343462, 29.6094434],\n\t\t\t\t\t[94.9295695, 29.6113703],\n\t\t\t\t\t[94.9288061, 29.6124782],\n\t\t\t\t\t[94.9268721, 29.6194181],\n\t\t\t\t\t[94.9273809, 29.6276608],\n\t\t\t\t\t[94.9274409, 29.6286334],\n\t\t\t\t\t[94.9263783, 29.6303683],\n\t\t\t\t\t[94.9250518, 29.6304537],\n\t\t\t\t\t[94.922744, 29.6299103],\n\t\t\t\t\t[94.9170292, 29.6256472],\n\t\t\t\t\t[94.9144757, 29.6243553],\n\t\t\t\t\t[94.9115439, 29.6243318],\n\t\t\t\t\t[94.9008302, 29.6273853],\n\t\t\t\t\t[94.8972905, 29.6276085],\n\t\t\t\t\t[94.8897112, 29.6252949],\n\t\t\t\t\t[94.8827398, 29.6253184],\n\t\t\t\t\t[94.8806998, 29.6268686],\n\t\t\t\t\t[94.8777241, 29.6317051],\n\t\t\t\t\t[94.8768493, 29.6342436],\n\t\t\t\t\t[94.8768641, 29.6346894],\n\t\t\t\t\t[94.8769277, 29.6365972],\n\t\t\t\t\t[94.8775677, 29.6391137],\n\t\t\t\t\t[94.8804943, 29.6418187],\n\t\t\t\t\t[94.8821969, 29.6438716],\n\t\t\t\t\t[94.8877263, 29.6456718],\n\t\t\t\t\t[94.8903366, 29.6468971],\n\t\t\t\t\t[94.8959561, 29.6481151],\n\t\t\t\t\t[94.9032857, 29.6528729],\n\t\t\t\t\t[94.9113869, 29.6568592],\n\t\t\t\t\t[94.9162734, 29.6587881],\n\t\t\t\t\t[94.9182022, 29.6625172],\n\t\t\t\t\t[94.9203882, 29.670104],\n\t\t\t\t\t[94.9197453, 29.6744761],\n\t\t\t\t\t[94.9192644, 29.6754058],\n\t\t\t\t\t[94.9178164, 29.6782052],\n\t\t\t\t\t[94.915116, 29.6816771],\n\t\t\t\t\t[94.9094581, 29.6810342],\n\t\t\t\t\t[94.9043145, 29.6796197],\n\t\t\t\t\t[94.9018712, 29.6806484],\n\t\t\t\t\t[94.8976278, 29.6812914],\n\t\t\t\t\t[94.8909411, 29.6856634],\n\t\t\t\t\t[94.8896552, 29.6890068],\n\t\t\t\t\t[94.892227, 29.6990368],\n\t\t\t\t\t[94.8978849, 29.704952],\n\t\t\t\t\t[94.9017426, 29.7100956],\n\t\t\t\t\t[94.9061206, 29.7112788],\n\t\t\t\t\t[94.9065005, 29.7113815],\n\t\t\t\t\t[94.9225743, 29.7192255],\n\t\t\t\t\t[94.9264023, 29.7212652],\n\t\t\t\t\t[94.9267629, 29.7213678],\n\t\t\t\t\t[94.9341474, 29.723469],\n\t\t\t\t\t[94.9360823, 29.7245705],\n\t\t\t\t\t[94.9357152, 29.7273333],\n\t\t\t\t\t[94.9344915, 29.7289804],\n\t\t\t\t\t[94.9323502, 29.7303263],\n\t\t\t\t\t[94.9298621, 29.73339],\n\t\t\t\t\t[94.9294542, 29.734665],\n\t\t\t\t\t[94.9298213, 29.7382244],\n\t\t\t\t\t[94.9306755, 29.739157],\n\t\t\t\t\t[94.9340021, 29.7439794],\n\t\t\t\t\t[94.9355331, 29.7464083],\n\t\t\t\t\t[94.9364901, 29.7488664],\n\t\t\t\t\t[94.9372115, 29.749423],\n\t\t\t\t\t[94.937775, 29.7498579],\n\t\t\t\t\t[94.939019, 29.7500527],\n\t\t\t\t\t[94.9407117, 29.7501944],\n\t\t\t\t\t[94.9429346, 29.7513629],\n\t\t\t\t\t[94.947778, 29.7543307],\n\t\t\t\t\t[94.9541921, 29.755984],\n\t\t\t\t\t[94.9574551, 29.7555414],\n\t\t\t\t\t[94.9603715, 29.7553644],\n\t\t\t\t\t[94.9629516, 29.755488],\n\t\t\t\t\t[94.9676317, 29.757489],\n\t\t\t\t\t[94.9709355, 29.7587814],\n\t\t\t\t\t[94.9737019, 29.7603278],\n\t\t\t\t\t[94.9738572, 29.7603796],\n\t\t\t\t\t[94.9844009, 29.7638941],\n\t\t\t\t\t[94.9852725, 29.7649069],\n\t\t\t\t\t[94.9861359, 29.7675568],\n\t\t\t\t\t[94.9898232, 29.7694497],\n\t\t\t\t\t[94.9917263, 29.7691954],\n\t\t\t\t\t[94.9966421, 29.7688099],\n\t\t\t\t\t[95.0005707, 29.7670075],\n\t\t\t\t\t[95.0007566, 29.7668999],\n\t\t\t\t\t[95.0028203, 29.7657056],\n\t\t\t\t\t[95.0080406, 29.7614995],\n\t\t\t\t\t[95.0092963, 29.7609572],\n\t\t\t\t\t[95.0138378, 29.7589957],\n\t\t\t\t\t[95.0160159, 29.7574362],\n\t\t\t\t\t[95.0194618, 29.7553902],\n\t\t\t\t\t[95.0222306, 29.7524106],\n\t\t\t\t\t[95.024336, 29.7498815],\n\t\t\t\t\t[95.0273932, 29.7487547],\n\t\t\t\t\t[95.0324981, 29.7493557],\n\t\t\t\t\t[95.0339552, 29.7496724],\n\t\t\t\t\t[95.0346257, 29.7499916],\n\t\t\t\t\t[95.035882, 29.7507411],\n\t\t\t\t\t[95.0375964, 29.7530966],\n\t\t\t\t\t[95.0386203, 29.754818],\n\t\t\t\t\t[95.0383895, 29.7567272],\n\t\t\t\t\t[95.038166, 29.7590432],\n\t\t\t\t\t[95.0395792, 29.7618349],\n\t\t\t\t\t[95.0411334, 29.7631575],\n\t\t\t\t\t[95.0420532, 29.7639402],\n\t\t\t\t\t[95.0467825, 29.7661735],\n\t\t\t\t\t[95.0495101, 29.7673453],\n\t\t\t\t\t[95.0510063, 29.7681933],\n\t\t\t\t\t[95.0516577, 29.7683919],\n\t\t\t\t\t[95.0560621, 29.7692331],\n\t\t\t\t\t[95.0577259, 29.7690047],\n\t\t\t\t\t[95.0588453, 29.7684695],\n\t\t\t\t\t[95.0650773, 29.767807],\n\t\t\t\t\t[95.0705737, 29.761782],\n\t\t\t\t\t[95.0720258, 29.7599696],\n\t\t\t\t\t[95.0736121, 29.7540856],\n\t\t\t\t\t[95.0754147, 29.751782],\n\t\t\t\t\t[95.0758224, 29.751042],\n\t\t\t\t\t[95.0760619, 29.750314],\n\t\t\t\t\t[95.0759483, 29.7495284],\n\t\t\t\t\t[95.0751984, 29.7480135],\n\t\t\t\t\t[95.0728911, 29.7466988],\n\t\t\t\t\t[95.0724585, 29.7445327],\n\t\t\t\t\t[95.0732804, 29.7429802],\n\t\t\t\t\t[95.0734102, 29.740789],\n\t\t\t\t\t[95.0731362, 29.7386729],\n\t\t\t\t\t[95.0744382, 29.7374902],\n\t\t\t\t\t[95.075294, 29.7367129],\n\t\t\t\t\t[95.079535, 29.7361346],\n\t\t\t\t\t[95.081745, 29.736994],\n\t\t\t\t\t[95.083005, 29.737484],\n\t\t\t\t\t[95.0833905, 29.7430745],\n\t\t\t\t\t[95.0844421, 29.7452715],\n\t\t\t\t\t[95.0871532, 29.7473749],\n\t\t\t\t\t[95.0918361, 29.7499864],\n\t\t\t\t\t[95.0931923, 29.7511573],\n\t\t\t\t\t[95.0943202, 29.7514189],\n\t\t\t\t\t[95.0965266, 29.7510558],\n\t\t\t\t\t[95.0991656, 29.7494408],\n\t\t\t\t\t[95.1029871, 29.7472998],\n\t\t\t\t\t[95.1038668, 29.7453591],\n\t\t\t\t\t[95.1063039, 29.7417406],\n\t\t\t\t\t[95.1084814, 29.741365],\n\t\t\t\t\t[95.111726, 29.7426671],\n\t\t\t\t\t[95.1138489, 29.7452914],\n\t\t\t\t\t[95.1152135, 29.7465013],\n\t\t\t\t\t[95.1154175, 29.7473556],\n\t\t\t\t\t[95.1158661, 29.7480506],\n\t\t\t\t\t[95.1167533, 29.7482586],\n\t\t\t\t\t[95.1179004, 29.7491572],\n\t\t\t\t\t[95.119434, 29.7515181],\n\t\t\t\t\t[95.1195997, 29.7517319],\n\t\t\t\t\t[95.1214023, 29.7535598],\n\t\t\t\t\t[95.1239692, 29.754987],\n\t\t\t\t\t[95.1260602, 29.7556005],\n\t\t\t\t\t[95.1284973, 29.7561388],\n\t\t\t\t\t[95.1311663, 29.7559002],\n\t\t\t\t\t[95.1323477, 29.7559385],\n\t\t\t\t\t[95.1344757, 29.7564723],\n\t\t\t\t\t[95.1350155, 29.7583672],\n\t\t\t\t\t[95.1382746, 29.7617848],\n\t\t\t\t\t[95.1400377, 29.7646815],\n\t\t\t\t\t[95.1410982, 29.7654339],\n\t\t\t\t\t[95.1437689, 29.7649144],\n\t\t\t\t\t[95.1469991, 29.7640131],\n\t\t\t\t\t[95.1503617, 29.7622343],\n\t\t\t\t\t[95.1506908, 29.7620602],\n\t\t\t\t\t[95.1532721, 29.7600322],\n\t\t\t\t\t[95.1565312, 29.7590432],\n\t\t\t\t\t[95.1584059, 29.7594063],\n\t\t\t\t\t[95.1589059, 29.7599317],\n\t\t\t\t\t[95.1595043, 29.7612399],\n\t\t\t\t\t[95.1611602, 29.7632119],\n\t\t\t\t\t[95.1635565, 29.7646136],\n\t\t\t\t\t[95.1700434, 29.7649144],\n\t\t\t\t\t[95.1730828, 29.7644136],\n\t\t\t\t\t[95.1748094, 29.7636814],\n\t\t\t\t\t[95.1765005, 29.7628339],\n\t\t\t\t\t[95.1794885, 29.7589784],\n\t\t\t\t\t[95.1830673, 29.7576787],\n\t\t\t\t\t[95.1848212, 29.7580682],\n\t\t\t\t\t[95.1869103, 29.7594603]\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t]\n}\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson"},{"path":"remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md","content":"# Flyover data sources\n\n## Landscape\n\nUse MapTiler for both layers:\n\n- `terrain-quantized-mesh-v2`: elevation encoded as Cesium quantized-mesh terrain.\n- `satellite-v2`: raster satellite imagery draped on that mesh.\n\nCesiumJS renders the layers; it does not supply the data. Set `REMOTION_MAPTILER_KEY`.\n\nCreate a key:\n\n- https://cloud.maptiler.com/account/keys/\n\nOfficial documentation:\n\n- https://docs.maptiler.com/cesium/\n- https://docs.maptiler.com/schema-raster/terrain-3d/\n\n## City\n\nUse Google Photorealistic 3D Tiles. Google supplies one high-resolution 3D mesh already textured\nwith imagery. Disable the Cesium globe and do not add MapTiler terrain or satellite beneath it. Set\n`REMOTION_GOOGLE_MAPS_API_KEY`.\n\nCreate and configure a key:\n\n- https://developers.google.com/maps/documentation/tile/get-api-key\n\nEnable the Map Tiles API in a billing-enabled Google Cloud project and restrict the key to that API.\nThe application restriction must permit the local headless Remotion request.\n\nOfficial documentation:\n\n- https://developers.google.com/maps/documentation/tile/3d-tiles\n- https://developers.google.com/maps/documentation/tile/policies\n\n## Why not extruded buildings\n\nOSM-, Overture- and vector-tile building products primarily provide footprints, approximate heights\nand optional roof attributes. They are useful for analytical or stylized maps, but they do not\nprovide the textured architecture required for a cinematic city flyover.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md"},{"path":"remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md","content":"# 3D Flyover — architecture reference\n\nDeep detail behind `TECHNIQUE.md`: provider loading, the camera-path pipeline, per-frame camera math, and\nthe proven terrain values. Both landscape and city modes have been forward-tested through Remotion.\n\n## 1. Provider initialization\n\nCreate the Viewer with `baseLayer: false`, UI widgets disabled, and\n`contextOptions.webgl.preserveDrawingBuffer: true`. Never hide the credit display.\n\n### Landscape\n\nAdd MapTiler `satellite-v2` with `UrlTemplateImageryProvider`, then load\n`terrain-quantized-mesh-v2` with `CesiumTerrainProvider.fromUrl({requestVertexNormals: true})`.\nMapTiler supplies both datasets; no Cesium ion token is required.\n\n### City\n\nDo not add MapTiler. Hide the globe, then add:\n\n```ts\nviewer.scene.globe.show = false;\nconst tileset = await Cesium.Cesium3DTileset.fromUrl(\n  `https://tile.googleapis.com/v1/3dtiles/root.json?key=${GOOGLE_KEY}`,\n  {showCreditsOnScreen: true, maximumScreenSpaceError: 4},\n);\nviewer.scene.primitives.add(tileset);\n```\n\nLower `maximumScreenSpaceError` improves refinement at substantial download/render cost. Start at\n`4` for a hero landmark and `6–8` for wider urban shots. Enforce the Google 30-second promotional\nvideo ceiling in the component.\n\nLoad Cesium from the CDN after setting `window.CESIUM_BASE_URL`; the tested version is `1.143`.\n\n## 2. The camera path — structure & generation\n\nFour properties matter, in order:\n\n1. **Continuous curvature** — the camera must flow through curves, never \"fly straight, snap to a new\n   heading, fly straight.\" The component applies three passes of **Chaikin corner cutting** to every\n   supplied path. Each pass replaces a segment with quarter and three-quarter points, rounding a\n   corner into a curve. Three passes are the default; four is softer, two is tighter.\n2. **Constant ground speed** — precompute cumulative distance along the rounded curve and interpolate\n   by arc length. Do not animate by source-point index; unequal source spacing creates speed bumps.\n3. **Minimized amplitude** — for detailed landscape centerlines, dampen the prepared path toward its\n   straight start→end chord by a fixed fraction `DAMP` (0 = dead straight, 1 = full river). This is\n   the single swerve-amplitude knob.\n4. **Enough length** — `PATHKM ≥ TRAVEL_KM + 2·LOOK_AHEAD_KM` so the look-ahead aim never clamps.\n\n`../scripts/prep-cesium-path.mjs` does: clip a window of the source centerline → resample to even\narc-length spacing (0.1 km) → moving-average smooth (±2.8 km window, 2 passes) → dampen toward the chord\n(`DAMP=0.45`). Validate with the heading-delta probe it prints — deltas should be small and change\n_gradually_ (water-wars: `3,0,-1,-3,-4,1,7,9,5,-5,-12,-7,…`). Big jumps = corners = bad.\n\nThe component then applies Chaikin smoothing to this prepared route, or directly to a short\nhand-authored city route. Keep city control points sparse and intentional; smoothing cannot rescue a\nzig-zagging route that crosses the subject repeatedly.\n\n**Source data:** OSM via Overpass (~0.3 km vertex spacing) — Natural Earth is too coarse for inner\ngorges. overpass-api.de is often busy → mirror `overpass.kumi.systems`.\n\n## 3. Camera animation per frame (position, heading, pitch, bank)\n\nWalk the path by **arc length** (precompute cumulative distances once). Every frame:\n\n- **Position** = the point at `dCam` km along the path, altitude `lerp(ALT_START, ALT_END, prog)`.\n- **Heading** = bearing from the camera point to a **real point `LOOK_AHEAD_KM` further along the same\n  path**. A far aim averages wiggle → smooth heading; on a curved path it leads into the bend, so the\n  heading turns gently with the path. (A local-tangent aim spins the camera at every kink — don't.)\n- **Pitch** = constant. We keep a MapLibre-style param `PITCH_FROM_NADIR` (90 = horizon), then convert:\n  **Cesium pitch = `-(90 - PITCH_FROM_NADIR)`** (Cesium: 0 = horizon, -90 = straight down). 76° → -14°.\n- **Bank (roll)** = lean _into_ the turn — the helicopter tell. Measure turn rate as the bearing change\n  between `aim` and a point `2·LOOK_AHEAD_KM` ahead; `roll = clamp(dH · BANK_GAIN, ±MAX_BANK)`. Because\n  the path is smooth, `dH` changes gradually → the bank eases in and out, never jerks.\n\n```ts\nconst setCamera = (C, viewer, prog) => {\n  const dCam = Math.min(TRAVEL_KM, PATHKM - LOOK_AHEAD_KM * 2) * prog;\n  const cam  = alongPath(dCam);                    // arc-length point\n  const aim  = alongPath(dCam + LOOK_AHEAD_KM);     // heading target (real point on the path)\n  const aim2 = alongPath(dCam + LOOK_AHEAD_KM * 2); // turn-rate probe → bank\n  const heading = bearing(cam, aim);\n  let dH = bearing(aim, aim2) - heading; while (dH > Math.PI) dH -= 2*Math.PI; while (dH < -Math.PI) dH += 2*Math.PI;\n  viewer.camera.setView({\n    destination: C.Cartesian3.fromDegrees(cam[0], cam[1], lerp(ALT_START, ALT_END, prog)),\n    orientation: { heading, pitch: C.Math.toRadians(-(90 - PITCH_FROM_NADIR)), roll: clamp(dH * BANK_GAIN, -MAX_BANK, MAX_BANK) },\n  });\n};\n```\n\n> **Cesium vs MapLibre conventions (gotcha):** Cesium heading is radians, 0 = north, clockwise. Pitch\n> 0 = horizon, negative = down (MapLibre is the inverse). Roll positive = bank right; tune the sign by eye.\n\n## 4. The feel — proven water-wars values\n\n| Param                    | Value                  | Meaning                                                                              |\n| ------------------------ | ---------------------- | ------------------------------------------------------------------------------------ |\n| `TRAVEL_KM`              | 13                     | How far the camera travels. **Speed = `TRAVEL_KM / durationSeconds`.**               |\n| duration                 | 24 s (720 f @30)       | 13 km / 24 s ≈ **0.54 km/s** — a slow, peaceful glide. 8 s felt \"extremely rushed\".  |\n| `ALT_START → ALT_END`    | 4600 → 4300 m ASL      | Absolute (terrain-independent). Inside the corridor walls → fly _through_, not over. |\n| `LOOK_AHEAD_KM`          | 1.5                    | Heading smoothness vs responsiveness.                                                |\n| `PITCH_FROM_NADIR`       | 76°                    | Stare-ahead down the corridor (90 = level). → Cesium -14°.                           |\n| `MAX_BANK` / `BANK_GAIN` | 0.13 rad (~7.5°) / 0.6 | Helicopter lean into turns.                                                          |\n| `verticalExaggeration`   | 1.1                    | Subtle terrain drama.                                                                |\n| `DAMP` (prep)            | 0.45                   | Swerve amount: higher = weavier, lower = straighter.                                 |\n\n**A slow camera renders fast.** At 0.54 km/s the camera moves ~18 m/frame, so tiles stay cached and each\n`settle()` returns almost immediately; the 720-frame render completed in one pass (no chunk-rendering).\n\n## 5. The complete component\n\nThe full, runnable component is `../assets/CesiumFlythrough.tsx` — read it directly. Its shape:\n\n- `loadCesium()` — inject `CESIUM_BASE_URL` + the CDN `Cesium.js`, resolve when loaded.\n- init effect — build the Viewer (§1), `setCamera(…, 0)`, `await settle(viewer)`, `continueRender`.\n- `settle(viewer)` — loop `viewer.render()` until `globe.tilesLoaded` for landscapes or\n  `tileset.tilesLoaded` for cities is stable for ~8 ticks (cap ~600).\n- per-frame effect — `delayRender({timeoutInMilliseconds: 60000})` → `setCamera(prog)` → `settle()` → `continueRender`.\n\n## 6. Render\n\n```bash\nbunx remotion still   src/index.ts <Comp> out.png --frame=N --gl=angle --timeout=180000   # validate framing/bank first\nbunx remotion render  src/index.ts <Comp> out.mp4  --gl=angle --concurrency=1 --timeout=180000\n```\n\n`--gl=angle` is mandatory. Use `--concurrency=1`; `settle()` already serializes tile loading.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md"},{"path":"remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md","content":"# 3D Flyover — troubleshooting\n\n## The headless dead-end (why we render through Remotion)\n\nCesium's globe **will not draw in a standalone headless Playwright/Chromium** harness. Verified on\nApple M4 (ANGLE Metal active, WebGL working): the skybox/stars render, but the globe surface produces\n**zero draw commands** (`scene.frameState.commandList.length === 0`), `globe.tilesLoaded` never goes\ntrue, and frames come back as the black starfield. No network failures; `sampleTerrainMostDetailed`\nsucceeds (terrain data is reachable). Dead-ends tried, all failed:\n\n- default render loop, manual `scene.render()`, manual `viewer.render()`, headed mode (context-destroyed).\n\n**What works:** render Cesium **through Remotion** — same headless Chrome, but driven by Remotion's frame\nloop with these four non-negotiables:\n\n1. `useDefaultRenderLoop = false` — drive frames by hand.\n2. Per frame call **`viewer.render()`**, NOT `scene.render()`. `viewer.render()` does the full frame\n   (`initializeFrame` → tile streaming → render); `scene.render()` skips frame-init, so tiles never\n   advance and the globe never appears. **This is the single most important line.**\n3. `contextOptions: { webgl: { preserveDrawingBuffer: true } }` so Remotion's screenshot captures pixels.\n4. Gate init + every frame with `delayRender(…, {timeoutInMilliseconds})` — tile loading can exceed Remotion's\n   default; use 60–120 s.\n\nThe standalone `flythrough.html` / `render.mjs` / `probe.mjs` from the original spike are kept only as the\nrecord of this dead-end. The canonical render path is the Remotion component\n(`../assets/CesiumFlythrough.tsx`).\n\n## Symptom → fix\n\n| Symptom                                                   | Cause                                                                                                         | Fix                                                                                                 |\n| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |\n| Frames are black with stars                               | Globe not drawing (headless Playwright, or `scene.render()` used)                                             | Render through Remotion; use `viewer.render()`; `useDefaultRenderLoop=false`.                       |\n| Screenshots blank/transparent                             | No `preserveDrawingBuffer`                                                                                    | `contextOptions:{ webgl:{ preserveDrawingBuffer:true } }`.                                          |\n| \"delayRender timed out\"                                   | Cold tiles exceed the default                                                                                 | `delayRender(…, {timeoutInMilliseconds: 120000})` + `--timeout=180000`.                             |\n| Globe is a dark/navy sphere                               | Imagery layer didn't attach                                                                                   | `baseLayer:false` then `viewer.imageryLayers.addImageryProvider(...)`.                              |\n| High-pitch frame shows a void/starfield above the horizon | No atmosphere                                                                                                 | `viewer.scene.skyAtmosphere.show = true`.                                                           |\n| 403 on tiles in headless                                  | Domain-locked MapTiler key                                                                                    | Use an **unrestricted** key.                                                                        |\n| Google root tileset returns 403                           | Map Tiles API disabled, billing absent, wrong key, or application restriction blocks local headless rendering | Enable Map Tiles API and billing; restrict the key to that API while allowing the Remotion request. |\n| Google scene shows a duplicate/competing surface          | MapTiler or the Cesium globe is still enabled                                                                 | Do not add MapTiler; set `viewer.scene.globe.show=false`.                                           |\n| Google mesh remains coarse                                | Screen-space error is too high or the capture starts before refinement                                        | Lower `maximumScreenSpaceError`; settle on `tileset.tilesLoaded`.                                   |\n| WebGL unavailable / software renderer                     | Missing GL flag                                                                                               | Render with `--gl=angle`.                                                                           |\n| Camera looks at sky / ground, not terrain                 | Pitch sign / convention                                                                                       | Cesium pitch 0 = horizon, negative = down (inverse of MapLibre); `-(90 - PITCH_FROM_NADIR)`.        |\n| Aim/turn-probe clamps near the end                        | Path too short                                                                                                | `PATHKM ≥ TRAVEL_KM + 2·LOOK_AHEAD_KM`; raise `WINDOW_KM` in prep.                                  |\n| Path feels like straight-then-corner                      | Douglas-Peucker simplification                                                                                | Use resample → moving-average smooth (see architecture §2), not `turf.simplify`.                    |\n| Camera bumps left and right instead of swerving           | Sparse route vertices are still being followed as straight segments                                           | Keep `pathSmoothingPasses={3}`; use sparse intentional control points and arc-length movement.      |\n\n## Gotchas checklist\n\n- **`viewer.render()`, never `scene.render()`** per frame. The single biggest trap.\n- Cesium loads from **CDN**; set `window.CESIUM_BASE_URL` _before_ injecting the script.\n- `preserveDrawingBuffer: true` or screenshots are blank.\n- `delayRender` uses `timeoutInMilliseconds`; set it to at least 60,000.\n- Terrain: `baseLayer:false`, then add MapTiler imagery.\n- Google: no MapTiler, hide the globe, retain `showCreditsOnScreen:true`.\n- Always `skyAtmosphere.show = true`.\n- Validate the path's heading-delta probe and render one **still** (framing + bank) before the full mp4.\n- Cesium pitch/roll conventions are inverted vs MapLibre.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md"},{"path":"remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs","content":"// Camera-path generator for the Cesium flythrough. Turns a river/route centerline GeoJSON into a LONG,\n// CONTINUOUSLY-curving camera path so the camera banks through smooth flowing curves (no\n// straight-then-corner). Method: clip → resample to even spacing → moving-average smooth (inherently\n// continuous curvature) → dampen lateral deviation toward the straight chord (dials swerve amplitude).\n// No Douglas-Peucker (that concentrates curvature at sparse control points → corners).\n//\n// RUN (out of the box, against the shipped sample):\n//   node prep-cesium-path.mjs\n//     → reads  assets/sample-river.geojson   (override: node prep-cesium-path.mjs <input.geojson> <output.json>)\n//     → writes assets/cesium-path.json        (then import that JSON in CesiumFlythrough.tsx, or copy it\n//                                               into your Remotion project's src/geo/ and adjust the import)\n//\n// ADAPT for a new location: change START (a point ON your centerline where the corridor opens),\n// WINDOW_KM, and DAMP/SMOOTH below. Input must be a single LineString feature (features[0].geometry).\n\nimport {readFileSync, writeFileSync, mkdirSync} from 'fs';\nimport {dirname, resolve} from 'path';\nimport {fileURLToPath} from 'url';\n\nconst __dir = dirname(fileURLToPath(import.meta.url));\nconst IN = process.argv[2] || resolve(__dir, '../assets/sample-river.geojson');\nconst OUT = process.argv[3] || resolve(__dir, '../assets/cesium-path.json');\nconst havKm = (a, b) => {\n\tconst R = 6371,\n\t\tr = Math.PI / 180,\n\t\tdLat = (b[1] - a[1]) * r,\n\t\tdLng = (b[0] - a[0]) * r;\n\tconst h =\n\t\tMath.sin(dLat / 2) ** 2 +\n\t\tMath.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;\n\treturn 2 * R * Math.asin(Math.sqrt(h));\n};\n\nconst gorge = JSON.parse(readFileSync(IN, 'utf8')).features[0].geometry\n\t.coordinates;\n\n// ADAPT: clip ~24 km of river from the reach where the flythrough opens. START must be a point ON the\n// centerline (the script snaps to the nearest vertex). The sample's opening is the Yarlung gorge:\nconst START = [94.968, 29.757];\nlet s0 = 0,\n\tbest = Infinity;\ngorge.forEach((p, i) => {\n\tconst d = havKm(p, START);\n\tif (d < best) {\n\t\tbest = d;\n\t\ts0 = i;\n\t}\n});\nconst WINDOW_KM = 30; // clip to ~end of gorge data; smoothing+dampening shrink it to the usable corridor\nconst clip = [];\nfor (let i = s0, acc = 0; i < gorge.length; i++) {\n\tif (i > s0) acc += havKm(gorge[i - 1], gorge[i]);\n\tif (acc > WINDOW_KM) break;\n\tclip.push(gorge[i]);\n}\n\n// Resample to even arc-length spacing so curvature is distributed evenly along the path.\nconst STEP_KM = 0.1;\nconst resample = (coords) => {\n\tconst out = [coords[0].slice()];\n\tlet carry = 0,\n\t\tfrom = coords[0];\n\tfor (let i = 1; i < coords.length; i++) {\n\t\tlet segLen = havKm(from, coords[i]);\n\t\twhile (carry + segLen >= STEP_KM) {\n\t\t\tconst t = (STEP_KM - carry) / segLen;\n\t\t\tconst np = [\n\t\t\t\tfrom[0] + (coords[i][0] - from[0]) * t,\n\t\t\t\tfrom[1] + (coords[i][1] - from[1]) * t,\n\t\t\t];\n\t\t\tout.push(np);\n\t\t\tfrom = np;\n\t\t\tsegLen = havKm(from, coords[i]);\n\t\t\tcarry = 0;\n\t\t}\n\t\tcarry += segLen;\n\t\tfrom = coords[i];\n\t}\n\treturn out;\n};\n\n// Moving-average smoothing — inherently continuous (no kinks). Window in points; repeat for extra glass.\nconst smoothMA = (coords, w, passes) => {\n\tlet c = coords;\n\tfor (let p = 0; p < passes; p++) {\n\t\tc = c.map((_, i) => {\n\t\t\tlet sx = 0,\n\t\t\t\tsy = 0,\n\t\t\t\tn = 0;\n\t\t\tfor (\n\t\t\t\tlet j = Math.max(0, i - w);\n\t\t\t\tj <= Math.min(c.length - 1, i + w);\n\t\t\t\tj++\n\t\t\t) {\n\t\t\t\tsx += c[j][0];\n\t\t\t\tsy += c[j][1];\n\t\t\t\tn++;\n\t\t\t}\n\t\t\treturn [sx / n, sy / n];\n\t\t});\n\t}\n\treturn c;\n};\n\nconst SMOOTH_W = 28; // ±2.8 km window — turns meanders into smooth flowing curves\nconst SMOOTH_PASSES = 2;\nconst DAMP = 0.45; // keep 45% of the (already-smooth) deviation → gentle, continuous swerve\n\nconst even = resample(clip);\nconst sm = smoothMA(even, SMOOTH_W, SMOOTH_PASSES);\n\nconst lat0 = (sm[0][1] * Math.PI) / 180;\nconst kx = 111.32 * Math.cos(lat0),\n\tky = 110.57;\nconst toXY = (p) => [(p[0] - sm[0][0]) * kx, (p[1] - sm[0][1]) * ky];\nconst toLL = (xy) => [sm[0][0] + xy[0] / kx, sm[0][1] + xy[1] / ky];\nconst A = toXY(sm[0]),\n\tB = toXY(sm[sm.length - 1]);\nconst AB = [B[0] - A[0], B[1] - A[1]],\n\tlen2 = AB[0] ** 2 + AB[1] ** 2;\nconst path = sm.map((p) => {\n\tconst P = toXY(p);\n\tconst t = ((P[0] - A[0]) * AB[0] + (P[1] - A[1]) * AB[1]) / len2;\n\tconst proj = [A[0] + t * AB[0], A[1] + t * AB[1]];\n\treturn toLL([\n\t\tproj[0] + (P[0] - proj[0]) * DAMP,\n\t\tproj[1] + (P[1] - proj[1]) * DAMP,\n\t]);\n});\n\nmkdirSync(dirname(OUT), {recursive: true});\nwriteFileSync(OUT, JSON.stringify(path));\n\nlet len = 0;\nfor (let i = 1; i < path.length; i++) len += havKm(path[i - 1], path[i]);\nconsole.log(\n\t`cesium-path: clip ${clip.length} → resample ${even.length} → smooth → ${path.length} pts · ${len.toFixed(1)} km`,\n);\nconst bear = (a, b) => {\n\tconst r = Math.PI / 180;\n\tconst y = Math.sin((b[0] - a[0]) * r) * Math.cos(b[1] * r);\n\tconst x =\n\t\tMath.cos(a[1] * r) * Math.sin(b[1] * r) -\n\t\tMath.sin(a[1] * r) * Math.cos(b[1] * r) * Math.cos((b[0] - a[0]) * r);\n\treturn (Math.atan2(y, x) * 180) / Math.PI;\n};\n// heading sampled every ~1.5 km — should change gradually & continuously (no big jumps = no corners)\nconst stepPts = Math.round(1.5 / STEP_KM);\nlet prev = null,\n\ths = [];\nfor (let i = 0; i + stepPts < path.length; i += stepPts) {\n\tconst h = bear(path[i], path[i + stepPts]);\n\tif (prev !== null) {\n\t\tlet d = h - prev;\n\t\twhile (d > 180) d -= 360;\n\t\twhile (d < -180) d += 360;\n\t\ths.push(d.toFixed(0));\n\t}\n\tprev = h;\n}\nconsole.log(`  heading deltas every 1.5km (deg): ${hs.join(', ')}`);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs"},{"path":"remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md","content":"# CesiumJS — 3D flyovers in Remotion\n\nInstructions for achieving map animations with \"flight-simulator\" perspective in Remotion.\n\n## Modes\n\n| Mode        | Data                                                  | Use for                                                |\n| ----------- | ----------------------------------------------------- | ------------------------------------------------------ |\n| `landscape` | MapTiler `terrain-quantized-mesh-v2` + `satellite-v2` | Mountains, gorges, rivers, coastlines and rural routes |\n| `city`      | Google Photorealistic 3D Tiles                        | Cities, architecture and recognizable landmarks        |\n\nDo not use footprint extrusions for city flyovers. They produce crude building blocks rather than\ntextured architecture.\n\n## Credentials\n\nFor `landscape`, set:\n\n```text\nREMOTION_MAPTILER_KEY=...\n```\n\nCreate a MapTiler key at https://cloud.maptiler.com/account/keys/.\n\nFor `city`, set:\n\n```text\nREMOTION_GOOGLE_MAPS_API_KEY=...\n```\n\nCreate a billing-enabled Google Map Tiles API key by following\nhttps://developers.google.com/maps/documentation/tile/get-api-key. Enable the **Map Tiles API** and\nrestrict the key to that API. Ensure its application restriction permits local headless Remotion\nrequests.\n\n## Build the flight\n\n1. Copy `assets/CesiumFlythrough.tsx`, a path JSON and `assets/example-Root.tsx` into the Remotion\n   project, or import the component directly.\n2. Supply the camera route as `[longitude, latitude][]`. Use only meaningful control points; do not hand-author dozens of tiny corrections.\n3. Leave `pathSmoothingPasses={3}` initially. The component applies repeated Chaikin corner cutting, turning straight-then-corner input into a continuous swerve. Increase to `4` for a softer route or reduce to `2` when the camera must follow a tight corridor.\n4. Set absolute camera altitudes for the location. City cameras normally fly lower than landscape\n   cameras.\n5. Render a middle-frame still before rendering the full video.\n\n```tsx\n<CesiumFlythrough\n  mode=\"city\"\n  path={cameraPath}\n  pathSmoothingPasses={3}\n  altitudeStart={700}\n  altitudeEnd={500}\n  lookAheadKm={0.7}\n  travelKm={4.5}\n/>\n```\n\n## Camera behavior\n\nWalk the smoothed curve by arc length for constant ground speed. Aim at a real point farther along\nthe curve rather than its next vertex. Derive roll from the change in look-ahead bearing so the\ncamera banks into a turn instead of twitching left and right.\n\nFor landscape routes, `scripts/prep-cesium-path.mjs` also clips, resamples, smooths and dampens a\nGeoJSON centerline before the component applies its final curve smoothing.\n\n\n## Mechanics\n\n- Set `viewer.useDefaultRenderLoop = false`.\n- Call `viewer.render()`, never `scene.render()`, while settling.\n- Use `preserveDrawingBuffer: true`.\n- Gate initialization and every frame with `delayRender`.\n- Drive camera animation from `useCurrentFrame()`; do not use CSS transitions or browser-timed animation.\n- Settle landscapes on `globe.tilesLoaded` and cities on `tileset.tilesLoaded`.\n- Keep all provider attribution visible.\n- Record the source and effective date of custom or disputed geography.\n- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.\n- Read `references/3d-flyover-architecture.md` for camera math, `references/3d-data-sources.md` for provider details, and `references/3d-troubleshooting.md` for blank, coarse, unauthorized or timed-out renders.\n\n## Files\n\n- `assets/CesiumFlythrough.tsx` — reusable two-mode component.\n- `assets/flight-path.ts` — dependency-free Chaikin route smoothing.\n- `assets/example-Root.tsx` — landscape and city compositions.\n- `assets/cesium-path.json` — sample landscape route.\n- `assets/city-path.json` — sample city route.\n- `assets/sample-river.geojson` — sample path-preparation input.\n- `scripts/prep-cesium-path.mjs` — dependency-free landscape route preparation.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md"},{"path":"remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md","content":"# Moving Map Render Stability\n\nRead this reference before building a moving 2D MapTiler scene or diagnosing a wavering Remotion render.\n\n## Symptom and cause\n\nIf basemap detail shimmers or jitters during a pan/zoom, the likely cause is per-frame `map.jumpTo()`.\nHeadless MapTiler capture can resample both vector hillshade and satellite imagery differently frame to\nframe. Tile retries, easing changes, and label changes do not solve that renderer effect.\n\n## Required pattern: fixed map plate\n\nFor any 2D pan/zoom:\n\n1. Render the MapTiler canvas once at the largest required zoom in an oversized container. Size it from the camera route and keep each dimension below the browser's reliable WebGL render-buffer limit (commonly 4096 px). Do **not** blindly use 3×: a 1920×1080 composition becomes 5760 px wide and Chromium may silently downsample it, causing visible pixelation during the CSS zoom.\n2. Keep the map's camera static.\n3. For each frame, calculate the approved target centre/zoom, then move the canvas with CSS `translate` + `scale`.\n4. Apply the same transform to every projected HTML overlay.\n5. Continue to animate GeoJSON data and paint properties imperatively; only the renderer camera is frozen.\n\nKeep pitch and bearing constant. Use a 3D engine such as Cesium for genuine changing pitch/bearing or a terrain flythrough.\n\n```ts\nconst baseZoom = Math.max(start.zoom, end.zoom);\nconst map = new maptilersdk.Map({\n  container,\n  style,\n  center: end.center,\n  zoom: baseZoom,\n  pitch: end.pitch ?? 0,\n  bearing: end.bearing ?? 0,\n  interactive: false,\n  fadeDuration: 0,\n  canvasContextAttributes: {preserveDrawingBuffer: true},\n});\n\n// Per Remotion frame. `camera` is the approved centre/zoom interpolation.\nconst projected = map.project(camera.center);\nconst scale = 2 ** (camera.zoom - baseZoom);\nconst plate = {\n  transform: `translate(${width / 2 - projected.x * scale}px, ${height / 2 - projected.y * scale}px) scale(${scale})`,\n  transformOrigin: \"0 0\",\n};\n\n// Convert label projection with exactly the same plate transform.\nconst labelX = labelPoint.x * scale + width / 2 - projected.x * scale;\nconst labelY = labelPoint.y * scale + height / 2 - projected.y * scale;\n```\n\n### Plate sizing and sharpness\n\n- Render at the maximum zoom reached by **any** camera waypoint, including intermediate or hold cameras. The CSS scale should never exceed `1`; otherwise the plate is being enlarged.\n- Centre the frozen map on the midpoint of the camera route's geographic extent, not automatically on the final camera. This minimizes required overscan.\n- Keep the largest canvas dimension at or below 4096 px unless the actual render environment has been tested with a larger `MAX_RENDERBUFFER_SIZE`.\n- For 1920×1080, a 3840×2160 plate is a safe default. For 1080×1920, use approximately 2700×3840 when the route needs extra horizontal pan room.\n- If the route cannot fit within that plate at the required zoom, split the shot into two fixed plates with a deliberate editorial transition. Do not trade sharpness for one enormous canvas.\n- Distinguish failure modes: repeating shimmer means the live renderer is moving; steadily soft tiles during a CSS push means the fixed plate is underspecified, internally downsampled, or being scaled above `1`.\n\n## Verification\n\n- Render a short MP4, not only a Studio preview.\n- Inspect static terrain texture and satellite detail while the camera moves.\n- If any underlying map detail wavers, use the fixed map plate. Do not approve it as a minor preview artefact.\n- Render WebGL with `--gl=angle`, `preserveDrawingBuffer:true`, and conservative concurrency (`1`) while validating.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md"},{"path":"remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md","content":"---\nname: maps-mapbox\ndescription: Make deterministic Remotion 2D map animations with Mapbox GL JS and Turf. Use when the user chooses Mapbox for animated routes, map markers, labels, camera movement, or Mapbox styles.\nmetadata:\n  tags: map, map animation, mapbox, turf, geojson, route animation\n---\n\nUse Mapbox GL JS for rendering maps in Remotion when the user wants Mapbox styles or higher-fidelity map visuals and has a Mapbox access token. Use Turf for geospatial operations such as great-circle routes, distances, slicing lines, and positions along routes.\n\nUse this technique only when the user has a Mapbox access token and wants Mapbox styles or data.\n\n## Core rules\n\n- Prefer `@turf/turf` for geospatial work. Do not hand-roll distance, great-circle, route slicing, or coordinate interpolation unless the user explicitly needs a custom non-geodesic effect.\n- Use GeoJSON sources and Mapbox layers for lines, markers, and labels. Avoid DOM `Marker` elements unless the user specifically asks for HTML markers.\n- Keep the live map camera static by default. Before moving it on every frame, read [moving-map stability](references/render-stability.md). Prefer a fixed map plate for satellite imagery, hillshade, or a modest 2D reframe.\n- Use a live per-frame camera only after rendering a short MP4 and checking for shimmer. This 2D technique does not provide genuine terrain, pitch, bearing, or banking.\n- Disable non-deterministic map behavior: `interactive: false`, `fadeDuration: 0`.\n- Drive animation from `useCurrentFrame()`; do not use CSS transitions or browser-timed animation.\n- Use `delayRender()` / `continueRender()` around map loading and per-frame map updates.\n- Set `preserveDrawingBuffer: true` and render WebGL with `bunx remotion ... --gl=angle`.\n- Before continuing the initial render, add sources/layers, apply the frame-0 camera with `jumpTo()` or `setFreeCameraOptions()`, then wait for `idle`.\n- Do not add a `mapInstance.remove()` cleanup function; it can interfere with Remotion's render lifecycle.\n- Use Mapbox style URLs such as `mapbox://styles/mapbox/standard` or a user-provided custom style.\n- Do not install `@types/mapbox-gl`; Mapbox GL JS ships its own types.\n- Keep required provider attribution visible and verify current provider terms before rendering.\n- Record the source and effective date of custom or disputed geography.\n- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.\n\nCoordinates in Mapbox, Turf, and GeoJSON are `[longitude, latitude]`.\n\n```ts\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n```\n\n## Prerequisites\n\nInstall Mapbox GL JS and Turf with the project's package manager.\n\n```bash\nnpm i mapbox-gl @turf/turf\n```\n\n```bash\nbun i mapbox-gl @turf/turf\n```\n\n```bash\nyarn add mapbox-gl @turf/turf\n```\n\n```bash\npnpm i mapbox-gl @turf/turf\n```\n\nImport the Mapbox CSS once in the component or an app-level stylesheet:\n\n```ts\nimport 'mapbox-gl/dist/mapbox-gl.css';\n```\n\nMapbox requires a public access token. Prefer passing it as an input prop or reading it from an environment variable that is available to the bundled Remotion code.\n\n```ts\nconst mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;\n\nif (!mapboxAccessToken) {\n\tthrow new Error('Set REMOTION_MAPBOX_TOKEN to render Mapbox maps.');\n}\n```\n\n## Basic map example\n\n```tsx\nimport {useEffect, useRef, useState} from 'react';\nimport {useDelayRender, useVideoConfig} from 'remotion';\nimport mapboxgl from 'mapbox-gl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\n\nconst mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;\n\nif (!mapboxAccessToken) {\n\tthrow new Error('Set REMOTION_MAPBOX_TOKEN to render Mapbox maps.');\n}\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {width, height} = useVideoConfig();\n\tconst [loadingHandle] = useState(() => delayRender('Loading Mapbox map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mapInstance = new mapboxgl.Map({\n\t\t\taccessToken: mapboxAccessToken,\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'mapbox://styles/mapbox/standard',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.jumpTo({center: zurich, zoom: 7});\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\treturn (\n\t\t<>\n\t\t\t<div ref={containerRef} style={{width, height, position: 'absolute'}} />\n\t\t</>\n\t);\n};\n```\n\nAnimated examples should keep the loaded map in React state and skip per-frame updates until that state is set.\n\n## Animated flight route example\n\nThis example shows the recommended pattern for route animations:\n\n- Turf creates the route and markers.\n- Turf slices the route for line reveal animation.\n- Mapbox renders the route with GeoJSON sources and layers.\n- The camera uses `jumpTo()` with animated center, zoom, bearing, and pitch.\n- Frame 0 is prepared before `continueRender()`.\n\n```tsx\nimport * as turf from '@turf/turf';\nimport {useEffect, useRef, useState} from 'react';\nimport {\n\tAbsoluteFill,\n\tEasing,\n\tinterpolate,\n\tuseCurrentFrame,\n\tuseDelayRender,\n\tuseVideoConfig,\n} from 'remotion';\nimport mapboxgl, {type GeoJSONSource, type Map} from 'mapbox-gl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n\nconst mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;\n\nif (!mapboxAccessToken) {\n\tthrow new Error('Set REMOTION_MAPBOX_TOKEN to render Mapbox maps.');\n}\n\nconst greatCircleLine = (from: [number, number], to: [number, number]) => {\n\tconst route = turf.greatCircle(from, to, {npoints: 100});\n\n\tif (route.geometry.type === 'LineString') {\n\t\treturn turf.lineString(route.geometry.coordinates);\n\t}\n\n\t// Great-circle routes crossing the antimeridian can become MultiLineString.\n\t// Keep the example valid by choosing the longest segment.\n\tconst longestSegment = route.geometry.coordinates.reduce((longest, segment) => {\n\t\treturn segment.length > longest.length ? segment : longest;\n\t});\n\n\treturn turf.lineString(longestSegment);\n};\n\nconst targetRoute = greatCircleLine(zurich, newYork);\nconst targetRouteDistance = turf.length(targetRoute);\n\nconst cityMarkers = turf.featureCollection([\n\tturf.point(zurich, {name: 'Zurich'}),\n\tturf.point(newYork, {name: 'New York'}),\n]);\n\nconst clampProgress = (progress: number) => Math.min(1, Math.max(0, progress));\n\nconst distanceAlong = (totalDistance: number, progress: number) => {\n\t// Keep the route non-empty at progress 0; Turf can error on zero-length slices.\n\treturn Math.max(0.001, totalDistance * clampProgress(progress));\n};\n\nconst getPartialTargetRoute = (progress: number) => {\n\treturn turf.lineSliceAlong(\n\t\ttargetRoute,\n\t\t0,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t);\n};\n\nconst getCameraOptions = (progress: number) => {\n\tconst target = turf.along(\n\t\ttargetRoute,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t).geometry.coordinates as [number, number];\n\n\treturn {\n\t\tcenter: target,\n\t\tzoom: interpolate(progress, [0, 0.5, 1], [7, 2.4, 8], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t}),\n\t\tbearing: interpolate(progress, [0, 1], [-20, 35], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t}),\n\t\tpitch: interpolate(progress, [0, 0.25, 0.75, 1], [25, 55, 55, 30], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t}),\n\t};\n};\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst frame = useCurrentFrame();\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {durationInFrames, height, width} = useVideoConfig();\n\tconst [map, setMap] = useState<Map | null>(null);\n\tconst [loadingHandle] = useState(() => delayRender('Loading Mapbox map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mapInstance = new mapboxgl.Map({\n\t\t\taccessToken: mapboxAccessToken,\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'mapbox://styles/mapbox/standard',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.addSource('trace', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: getPartialTargetRoute(0),\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'trace-line',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'trace',\n\t\t\t\tlayout: {\n\t\t\t\t\t'line-cap': 'round',\n\t\t\t\t\t'line-join': 'round',\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': '#111111',\n\t\t\t\t\t'line-width': 7,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addSource('city-markers', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: cityMarkers,\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-dots',\n\t\t\t\ttype: 'circle',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tpaint: {\n\t\t\t\t\t'circle-color': '#f03b20',\n\t\t\t\t\t'circle-radius': 12,\n\t\t\t\t\t'circle-stroke-color': '#ffffff',\n\t\t\t\t\t'circle-stroke-width': 4,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-labels',\n\t\t\t\ttype: 'symbol',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tlayout: {\n\t\t\t\t\t'text-allow-overlap': true,\n\t\t\t\t\t'text-anchor': 'top',\n\t\t\t\t\t'text-field': ['get', 'name'],\n\t\t\t\t\t'text-offset': [0, 0.9],\n\t\t\t\t\t'text-size': 28,\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'text-color': '#111111',\n\t\t\t\t\t'text-halo-color': '#ffffff',\n\t\t\t\t\t'text-halo-width': 3,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.jumpTo(getCameraOptions(0));\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tsetMap(mapInstance);\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\tuseEffect(() => {\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handle = delayRender('Rendering Mapbox frame');\n\t\tconst timelineProgress = interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t});\n\t\tconst travelProgress = interpolate(timelineProgress, [0.2, 0.82], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t});\n\t\tconst trace = map.getSource('trace') as GeoJSONSource | undefined;\n\n\t\ttrace?.setData(getPartialTargetRoute(travelProgress));\n\t\tmap.jumpTo(getCameraOptions(travelProgress));\n\n\t\tmap.once('idle', () => continueRender(handle));\n\t\t// Force an idle event even if the camera parameters are unchanged from the previous frame.\n\t\tmap.triggerRepaint();\n\t}, [continueRender, delayRender, durationInFrames, frame, map]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: '#e8eef3'}}>\n\t\t\t<div ref={containerRef} style={{height, position: 'absolute', width}} />\n\t\t</AbsoluteFill>\n\t);\n};\n```\n\n## Camera guidance\n\nFor a validated live-camera route animation, animate `center`, `zoom`, `bearing`, and `pitch` with `jumpTo()`:\n\n```ts\nmap.jumpTo({\n\tcenter,\n\tzoom,\n\tbearing,\n\tpitch,\n});\n```\n\nKeep route progress and camera progress separate if the camera needs to lead, lag, zoom out, or zoom back in. For cinematic 3D camera moves, load the 3D flyover branch from the parent skill.\n\n## Lines\n\nUse GeoJSON sources for lines. Unless the user asks, do not add glow effects or extra decorative points.\n\nFor geodesic flight routes, use Turf:\n\n```ts\nconst line = greatCircleLine(start, end);\nconst distance = turf.length(line);\nconst partialLine = turf.lineSliceAlong(\n\tline,\n\t0,\n\t// Keep the route non-empty at progress 0.\n\tMath.max(0.001, distance * progress),\n);\n```\n\nFor a visually straight line on the map, use a simple GeoJSON `LineString` between the two points instead of `greatCircle()`.\n\n## Markers and labels\n\nUse map-native GeoJSON layers for markers and labels:\n\n```tsx\nmapInstance.addSource('markers', {\n\ttype: 'geojson',\n\tdata: turf.featureCollection([\n\t\tturf.point([-118.2437, 34.0522], {name: 'Los Angeles'}),\n\t]),\n});\n\nmapInstance.addLayer({\n\tid: 'marker-dots',\n\ttype: 'circle',\n\tsource: 'markers',\n\tpaint: {\n\t\t'circle-color': '#f03b20',\n\t\t'circle-radius': 12,\n\t\t'circle-stroke-color': '#ffffff',\n\t\t'circle-stroke-width': 4,\n\t},\n});\n\nmapInstance.addLayer({\n\tid: 'marker-labels',\n\ttype: 'symbol',\n\tsource: 'markers',\n\tlayout: {\n\t\t'text-allow-overlap': true,\n\t\t'text-anchor': 'top',\n\t\t'text-field': ['get', 'name'],\n\t\t'text-offset': [0, 0.9],\n\t\t'text-size': 28,\n\t},\n\tpaint: {\n\t\t'text-color': '#111111',\n\t\t'text-halo-color': '#ffffff',\n\t\t'text-halo-width': 3,\n\t},\n});\n```\n\nMake marker sizes and label font sizes large enough for the composition resolution.\n\n## Styles\n\nDefault to Mapbox Standard:\n\n```ts\nstyle: 'mapbox://styles/mapbox/standard'\n```\n\nIf the user requests another style, use any valid Mapbox style URL.\n\n## Rendering\n\nFor WebGL map renders, prefer single concurrency and ANGLE:\n\n```bash\nbunx remotion render [composition-id] out/video.mp4 --gl=angle --concurrency=1\n```\n\nUse the equivalent package runner for the project. In npm projects, use `npx`; in Bun projects, use `bunx`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md"},{"path":"remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md","content":"# Moving Map Render Stability\n\nRead this reference before building a moving 2D MapTiler scene or diagnosing a wavering Remotion render.\n\n## Symptom and cause\n\nIf basemap detail shimmers or jitters during a pan/zoom, the likely cause is per-frame `map.jumpTo()`.\nHeadless MapTiler capture can resample both vector hillshade and satellite imagery differently frame to\nframe. Tile retries, easing changes, and label changes do not solve that renderer effect.\n\n## Required pattern: fixed map plate\n\nFor any 2D pan/zoom:\n\n1. Render the MapTiler canvas once at the largest required zoom in an oversized container. Size it from the camera route and keep each dimension below the browser's reliable WebGL render-buffer limit (commonly 4096 px). Do **not** blindly use 3×: a 1920×1080 composition becomes 5760 px wide and Chromium may silently downsample it, causing visible pixelation during the CSS zoom.\n2. Keep the map's camera static.\n3. For each frame, calculate the approved target centre/zoom, then move the canvas with CSS `translate` + `scale`.\n4. Apply the same transform to every projected HTML overlay.\n5. Continue to animate GeoJSON data and paint properties imperatively; only the renderer camera is frozen.\n\nKeep pitch and bearing constant. Use a 3D engine such as Cesium for genuine changing pitch/bearing or a terrain flythrough.\n\n```ts\nconst baseZoom = Math.max(start.zoom, end.zoom);\nconst map = new maptilersdk.Map({\n  container,\n  style,\n  center: end.center,\n  zoom: baseZoom,\n  pitch: end.pitch ?? 0,\n  bearing: end.bearing ?? 0,\n  interactive: false,\n  fadeDuration: 0,\n  canvasContextAttributes: {preserveDrawingBuffer: true},\n});\n\n// Per Remotion frame. `camera` is the approved centre/zoom interpolation.\nconst projected = map.project(camera.center);\nconst scale = 2 ** (camera.zoom - baseZoom);\nconst plate = {\n  transform: `translate(${width / 2 - projected.x * scale}px, ${height / 2 - projected.y * scale}px) scale(${scale})`,\n  transformOrigin: \"0 0\",\n};\n\n// Convert label projection with exactly the same plate transform.\nconst labelX = labelPoint.x * scale + width / 2 - projected.x * scale;\nconst labelY = labelPoint.y * scale + height / 2 - projected.y * scale;\n```\n\n### Plate sizing and sharpness\n\n- Render at the maximum zoom reached by **any** camera waypoint, including intermediate or hold cameras. The CSS scale should never exceed `1`; otherwise the plate is being enlarged.\n- Centre the frozen map on the midpoint of the camera route's geographic extent, not automatically on the final camera. This minimizes required overscan.\n- Keep the largest canvas dimension at or below 4096 px unless the actual render environment has been tested with a larger `MAX_RENDERBUFFER_SIZE`.\n- For 1920×1080, a 3840×2160 plate is a safe default. For 1080×1920, use approximately 2700×3840 when the route needs extra horizontal pan room.\n- If the route cannot fit within that plate at the required zoom, split the shot into two fixed plates with a deliberate editorial transition. Do not trade sharpness for one enormous canvas.\n- Distinguish failure modes: repeating shimmer means the live renderer is moving; steadily soft tiles during a CSS push means the fixed plate is underspecified, internally downsampled, or being scaled above `1`.\n\n## Verification\n\n- Render a short MP4, not only a Studio preview.\n- Inspect static terrain texture and satellite detail while the camera moves.\n- If any underlying map detail wavers, use the fixed map plate. Do not approve it as a minor preview artefact.\n- Render WebGL with `--gl=angle`, `preserveDrawingBuffer:true`, and conservative concurrency (`1`) while validating.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md"},{"path":"remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md","content":"---\nname: maps-maplibre\ndescription: Make deterministic Remotion 2D map animations with MapLibre GL JS and Turf. Use when the user chooses MapLibre for animated routes, map markers, labels, and camera movement.\nmetadata:\n  tags: map, map animation, maplibre, turf, geojson, route animation\n---\n\nUse MapLibre GL JS for rendering maps in Remotion. Use Turf for geospatial operations such as great-circle routes, distances, slicing lines, and positions along routes.\n\n## Core rules\n\n- Prefer `@turf/turf` for geospatial work. Do not hand-roll distance, great-circle, route slicing, or coordinate interpolation unless the user explicitly needs a custom non-geodesic effect.\n- Use GeoJSON sources and MapLibre layers for lines, markers, and labels. Avoid DOM `Marker` elements unless the user specifically asks for HTML markers.\n- Keep the live map camera static by default. Before moving it on every frame, read [moving-map stability](references/render-stability.md). Prefer a fixed map plate for satellite imagery, hillshade, or a modest 2D reframe.\n- Use a live per-frame camera only after rendering a short MP4 and checking for shimmer. This 2D technique does not provide genuine terrain, pitch, bearing, or banking.\n- Disable non-deterministic map behavior: `interactive: false`, `fadeDuration: 0`.\n- Drive animation from `useCurrentFrame()`; do not use CSS transitions or browser-timed animation.\n- Use `delayRender()` / `continueRender()` around map loading and per-frame map updates.\n- Set `preserveDrawingBuffer: true` and render WebGL with `bunx remotion ... --gl=angle`.\n- Before continuing the initial render, add sources/layers, apply the frame-0 camera with `jumpTo()`, then wait for `idle`.\n- Do not add a `mapInstance.remove()` cleanup function; it can interfere with Remotion's render lifecycle.\n- Use standard MapLibre style JSON URLs and layer/source APIs.\n- Do not install `@types/maplibre-gl`; MapLibre ships its own types.\n- Keep required provider attribution visible and verify the current terms of the chosen style and tile providers before rendering.\n- Record the source and effective date of custom or disputed geography.\n- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.\n\nCoordinates in MapLibre, Turf, and GeoJSON are `[longitude, latitude]`.\n\n```ts\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n```\n\n## Prerequisites\n\nInstall MapLibre and Turf with the project's package manager.\n\n```bash\nnpm i maplibre-gl @turf/turf\n```\n\n```bash\nbun i maplibre-gl @turf/turf\n```\n\n```bash\nyarn add maplibre-gl @turf/turf\n```\n\n```bash\npnpm i maplibre-gl @turf/turf\n```\n\nImport the MapLibre CSS once in the component or an app-level stylesheet:\n\n```ts\nimport 'maplibre-gl/dist/maplibre-gl.css';\n```\n\n## Basic map example\n\n```tsx\nimport {useEffect, useRef, useState} from 'react';\nimport {useDelayRender, useVideoConfig} from 'remotion';\nimport * as maplibregl from 'maplibre-gl';\nimport 'maplibre-gl/dist/maplibre-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {width, height} = useVideoConfig();\n\tconst [loadingHandle] = useState(() => delayRender('Loading map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tmaplibregl.setWorkerUrl(\n\t\t\tURL.createObjectURL(\n\t\t\t\tnew Blob(\n\t\t\t\t\t[`import \"https://unpkg.com/maplibre-gl@${maplibregl.getVersion()}/dist/maplibre-gl-worker.mjs\";`],\n\t\t\t\t\t{type: 'text/javascript'},\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\n\t\tconst mapInstance = new maplibregl.Map({\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'https://demotiles.maplibre.org/style.json',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.jumpTo({center: zurich, zoom: 7});\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\treturn (\n\t\t<>\n\t\t\t<div ref={containerRef} style={{width, height, position: 'absolute'}} />\n\t\t</>\n\t);\n};\n```\n\nAnimated examples should keep the loaded map in React state and skip per-frame updates until that state is set.\n\n## Animated flight route example\n\nThis example shows the recommended pattern for route animations:\n\n- Turf creates the route and markers.\n- Turf slices the route for line reveal animation.\n- The camera has a separate route from the target route.\n- MapLibre's `calculateCameraOptionsFromTo()` is used for camera movement.\n- Frame 0 is prepared before `continueRender()`.\n\n```tsx\nimport * as turf from '@turf/turf';\nimport {useEffect, useRef, useState} from 'react';\nimport {\n\tAbsoluteFill,\n\tEasing,\n\tinterpolate,\n\tuseCurrentFrame,\n\tuseDelayRender,\n\tuseVideoConfig,\n} from 'remotion';\nimport * as maplibregl from 'maplibre-gl';\nimport {type GeoJSONSource, type Map} from 'maplibre-gl';\nimport 'maplibre-gl/dist/maplibre-gl.css';\n\nconst zurich: [number, number] = [8.5417, 47.3769];\nconst newYork: [number, number] = [-74.006, 40.7128];\n\nconst greatCircleLine = (from: [number, number], to: [number, number]) => {\n\tconst route = turf.greatCircle(from, to, {npoints: 100});\n\n\tif (route.geometry.type === 'LineString') {\n\t\treturn turf.lineString(route.geometry.coordinates);\n\t}\n\n\t// Great-circle routes crossing the antimeridian can become MultiLineString.\n\t// Keep the example valid by choosing the longest segment.\n\tconst longestSegment = route.geometry.coordinates.reduce((longest, segment) => {\n\t\treturn segment.length > longest.length ? segment : longest;\n\t});\n\n\treturn turf.lineString(longestSegment);\n};\n\nconst targetRoute = greatCircleLine(zurich, newYork);\nconst targetRouteDistance = turf.length(targetRoute);\n\nconst cameraRoute = greatCircleLine(zurich, newYork);\nconst cameraRouteDistance = turf.length(cameraRoute);\n\nconst cityMarkers = turf.featureCollection([\n\tturf.point(zurich, {name: 'Zurich'}),\n\tturf.point(newYork, {name: 'New York'}),\n]);\n\nconst clampProgress = (progress: number) => Math.min(1, Math.max(0, progress));\n\nconst distanceAlong = (totalDistance: number, progress: number) => {\n\t// Keep the route non-empty at progress 0; Turf can error on zero-length slices.\n\treturn Math.max(0.001, totalDistance * clampProgress(progress));\n};\n\nconst getPartialTargetRoute = (progress: number) => {\n\treturn turf.lineSliceAlong(\n\t\ttargetRoute,\n\t\t0,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t);\n};\n\nconst getCameraOptions = (\n\tmap: Map,\n\tprogress: number,\n\tcameraAltitudeMeters: number,\n\tcameraLatitudeOffset: number,\n) => {\n\tconst target = turf.along(\n\t\ttargetRoute,\n\t\tdistanceAlong(targetRouteDistance, progress),\n\t).geometry.coordinates;\n\tconst camera = turf.along(\n\t\tcameraRoute,\n\t\tdistanceAlong(cameraRouteDistance, progress),\n\t).geometry.coordinates;\n\n\treturn map.calculateCameraOptionsFromTo(\n\t\tnew maplibregl.LngLat(camera[0], camera[1] - cameraLatitudeOffset),\n\t\tcameraAltitudeMeters,\n\t\tnew maplibregl.LngLat(target[0], target[1]),\n\t);\n};\n\nexport const MyComposition = () => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst frame = useCurrentFrame();\n\tconst {delayRender, continueRender} = useDelayRender();\n\tconst {durationInFrames, height, width} = useVideoConfig();\n\tconst [map, setMap] = useState<Map | null>(null);\n\tconst [loadingHandle] = useState(() => delayRender('Loading MapLibre map'));\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tmaplibregl.setWorkerUrl(\n\t\t\tURL.createObjectURL(\n\t\t\t\tnew Blob(\n\t\t\t\t\t[`import \"https://unpkg.com/maplibre-gl@${maplibregl.getVersion()}/dist/maplibre-gl-worker.mjs\";`],\n\t\t\t\t\t{type: 'text/javascript'},\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\n\t\tconst mapInstance = new maplibregl.Map({\n\t\t\tcontainer: containerRef.current,\n\t\t\tstyle: 'https://demotiles.maplibre.org/style.json',\n\t\t\tcenter: zurich,\n\t\t\tzoom: 7,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: false,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {\n\t\t\t\tpreserveDrawingBuffer: true,\n\t\t\t},\n\t\t});\n\n\t\tmapInstance.on('load', () => {\n\t\t\tmapInstance.addSource('trace', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: getPartialTargetRoute(0),\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'trace-line',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'trace',\n\t\t\t\tlayout: {\n\t\t\t\t\t'line-cap': 'round',\n\t\t\t\t\t'line-join': 'round',\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': '#111111',\n\t\t\t\t\t'line-width': 7,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addSource('city-markers', {\n\t\t\t\ttype: 'geojson',\n\t\t\t\tdata: cityMarkers,\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-dots',\n\t\t\t\ttype: 'circle',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tpaint: {\n\t\t\t\t\t'circle-color': '#f03b20',\n\t\t\t\t\t'circle-radius': 12,\n\t\t\t\t\t'circle-stroke-color': '#ffffff',\n\t\t\t\t\t'circle-stroke-width': 4,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.addLayer({\n\t\t\t\tid: 'city-marker-labels',\n\t\t\t\ttype: 'symbol',\n\t\t\t\tsource: 'city-markers',\n\t\t\t\tlayout: {\n\t\t\t\t\t'text-allow-overlap': true,\n\t\t\t\t\t'text-anchor': 'top',\n\t\t\t\t\t'text-field': ['get', 'name'],\n\t\t\t\t\t'text-offset': [0, 0.9],\n\t\t\t\t\t'text-size': 28,\n\t\t\t\t},\n\t\t\t\tpaint: {\n\t\t\t\t\t'text-color': '#111111',\n\t\t\t\t\t'text-halo-color': '#ffffff',\n\t\t\t\t\t'text-halo-width': 3,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tmapInstance.jumpTo(getCameraOptions(mapInstance, 0, 180000, 1.1));\n\t\t\tmapInstance.once('idle', () => {\n\t\t\t\tsetMap(mapInstance);\n\t\t\t\tcontinueRender(loadingHandle);\n\t\t\t});\n\t\t});\n\t}, [continueRender, loadingHandle]);\n\n\tuseEffect(() => {\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handle = delayRender('Rendering MapLibre frame');\n\t\tconst timelineProgress = interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t});\n\t\tconst travelProgress = interpolate(timelineProgress, [0.2, 0.82], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t});\n\t\tconst cameraAltitudeMeters = interpolate(\n\t\t\ttimelineProgress,\n\t\t\t[0, 0.28, 0.74, 1],\n\t\t\t[180000, 2200000, 2200000, 180000],\n\t\t\t{\n\t\t\t\textrapolateLeft: 'clamp',\n\t\t\t\textrapolateRight: 'clamp',\n\t\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t\t},\n\t\t);\n\t\tconst cameraLatitudeOffset = interpolate(\n\t\t\ttimelineProgress,\n\t\t\t[0, 0.28, 0.74, 1],\n\t\t\t[1.1, 8, 8, 1.1],\n\t\t\t{\n\t\t\t\textrapolateLeft: 'clamp',\n\t\t\t\textrapolateRight: 'clamp',\n\t\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t\t},\n\t\t);\n\t\tconst trace = map.getSource('trace') as GeoJSONSource | undefined;\n\n\t\ttrace?.setData(getPartialTargetRoute(travelProgress));\n\t\tmap.jumpTo(\n\t\t\tgetCameraOptions(\n\t\t\t\tmap,\n\t\t\t\ttravelProgress,\n\t\t\t\tcameraAltitudeMeters,\n\t\t\t\tcameraLatitudeOffset,\n\t\t\t),\n\t\t);\n\n\t\tmap.once('idle', () => continueRender(handle));\n\t\t// Force an idle event even if the camera parameters are unchanged from the previous frame.\n\t\tmap.triggerRepaint();\n\t}, [continueRender, delayRender, durationInFrames, frame, map]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: '#e8eef3'}}>\n\t\t\t<div ref={containerRef} style={{height, position: 'absolute', width}} />\n\t\t</AbsoluteFill>\n\t);\n};\n```\n\n## Camera guidance\n\nUse MapLibre's camera helper for camera movement:\n\n```ts\nmap.calculateCameraOptionsFromTo(cameraLngLat, cameraAltitudeMeters, targetLngLat);\n```\n\nA good pattern is to keep two concepts separate:\n\n- `targetRoute`: where the animated line is and where the camera looks.\n- `cameraRoute`: where the camera moves.\n\nThen use Turf to read positions from both routes for the same progress value:\n\n```ts\nconst target = turf.along(targetRoute, targetDistance * progress).geometry.coordinates;\nconst camera = turf.along(cameraRoute, cameraDistance * progress).geometry.coordinates;\n\nmap.jumpTo(\n\tmap.calculateCameraOptionsFromTo(\n\t\tnew maplibregl.LngLat(camera[0], camera[1]),\n\t\tcameraAltitudeMeters,\n\t\tnew maplibregl.LngLat(target[0], target[1]),\n\t),\n);\n```\n\nFor zoom-out / travel / zoom-in animations, animate travel progress separately from camera altitude. Camera altitude is measured in meters. This avoids heavy custom camera math.\n\n## Lines\n\nUse GeoJSON sources for lines. Unless the user asks, do not add glow effects or extra decorative points.\n\nFor geodesic flight routes, use Turf:\n\n```ts\nconst line = greatCircleLine(start, end);\nconst distance = turf.length(line);\nconst partialLine = turf.lineSliceAlong(\n\tline,\n\t0,\n\t// Keep the route non-empty at progress 0.\n\tMath.max(0.001, distance * progress),\n);\n```\n\nFor a visually straight line on the map, use a simple GeoJSON `LineString` between the two points instead of `greatCircle()`.\n\n## Markers and labels\n\nUse map-native GeoJSON layers for markers and labels:\n\n```tsx\nmapInstance.addSource('markers', {\n\ttype: 'geojson',\n\tdata: turf.featureCollection([\n\t\tturf.point([-118.2437, 34.0522], {name: 'Los Angeles'}),\n\t]),\n});\n\nmapInstance.addLayer({\n\tid: 'marker-dots',\n\ttype: 'circle',\n\tsource: 'markers',\n\tpaint: {\n\t\t'circle-color': '#f03b20',\n\t\t'circle-radius': 12,\n\t\t'circle-stroke-color': '#ffffff',\n\t\t'circle-stroke-width': 4,\n\t},\n});\n\nmapInstance.addLayer({\n\tid: 'marker-labels',\n\ttype: 'symbol',\n\tsource: 'markers',\n\tlayout: {\n\t\t'text-allow-overlap': true,\n\t\t'text-anchor': 'top',\n\t\t'text-field': ['get', 'name'],\n\t\t'text-offset': [0, 0.9],\n\t\t'text-size': 28,\n\t},\n\tpaint: {\n\t\t'text-color': '#111111',\n\t\t'text-halo-color': '#ffffff',\n\t\t'text-halo-width': 3,\n\t},\n});\n```\n\nMake marker sizes and label font sizes large enough for the composition resolution.\n\n## Styles\n\nDefault to the stock MapLibre demo style:\n\n```ts\nstyle: 'https://demotiles.maplibre.org/style.json'\n```\n\nIf the user requests another style, use any valid MapLibre style JSON URL.\n\n## Rendering\n\nFor WebGL map renders, prefer single concurrency and ANGLE:\n\n```bash\nbunx remotion render [composition-id] out/video.mp4 --gl=angle --concurrency=1\n```\n\nUse the equivalent package runner for the project. In npm projects, use `npx`; in Bun projects, use `bunx`.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx","content":"import React from 'react';\nimport {Easing, interpolate} from 'remotion';\n\n// Reusable country label. Supply typography and final values from the consuming project; the CSS custom\n// properties below provide neutral fallbacks. Positioned by its centre (x,y in screen px).\nexport const CountryLabel: React.FC<{\n\tname: string;\n\tcolor: string;\n\treveal: number;\n\tx: number;\n\ty: number;\n}> = ({name, color, reveal, x, y}) => {\n\tconst e = interpolate(reveal, [0, 1], [0, 1], {\n\t\textrapolateLeft: 'clamp',\n\t\textrapolateRight: 'clamp',\n\t\teasing: Easing.bezier(0.3333333333333333, 1, 0.6666666666666666, 1),\n\t});\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: x,\n\t\t\t\ttop: y,\n\t\t\t\ttransform: 'translate(-50%, -50%)',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\talignItems: 'center',\n\t\t\t\topacity: e,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translateY(${(1 - e) * 16}px)`,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* accent rule — draws out from the centre in the country's colour */}\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\twidth: 64,\n\t\t\t\t\t\theight: 3,\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\tbackground: color,\n\t\t\t\t\t\ttransform: `scaleX(${e})`,\n\t\t\t\t\t\tboxShadow: `0 0 10px ${color}`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: 'var(--map-label-font, system-ui, sans-serif)',\n\t\t\t\t\t\tfontWeight: 'var(--map-label-weight, 600)',\n\t\t\t\t\t\tfontSize: 'var(--map-label-size, 34px)',\n\t\t\t\t\t\tletterSpacing: 'var(--map-label-tracking, 0.16em)',\n\t\t\t\t\t\ttextTransform: 'uppercase',\n\t\t\t\t\t\tcolor: 'var(--map-label-color, #ffffff)',\n\t\t\t\t\t\ttextShadow: 'var(--map-label-shadow, 0 2px 18px rgba(0,0,0,0.9))',\n\t\t\t\t\t\tmarginTop: 13,\n\t\t\t\t\t\tpaddingLeft: 'var(--map-label-tracking, 0.16em)',\n\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{name}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx","content":"// Minimal Remotion scaffold for the map explainer. In a Remotion project (`bunx create-video@latest`,\n// blank template), this is `src/Root.tsx`; `src/index.ts` is just `registerRoot(RemotionRoot)`.\n//\n// The Composition sets DURATION (the beat) and dimensions. The component reads durationInFrames / width /\n// height from useVideoConfig(). The beat must be long enough for the last country's full sequence after\n// the river reaches it. See references/map-explainer-architecture.md §2.\n// Render with: bunx remotion render src/index.ts MapExplainer out.mp4 --gl=angle --concurrency=1 --timeout=120000\n\nimport React from 'react';\nimport {Composition} from 'remotion';\nimport {RiverReveal} from './RiverReveal'; // → src/components/RiverReveal.tsx in your project\n\nexport const RemotionRoot: React.FC = () => (\n\t<Composition\n\t\tid=\"MapExplainer\"\n\t\tcomponent={RiverReveal}\n\t\tdurationInFrames={12 * 30} // 12 s @ 30 fps — raise if a later country needs more room after the river arrives\n\t\tfps={30}\n\t\twidth={1920}\n\t\theight={1080}\n\t/>\n);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts","content":"// Surface an existing MapTiler Planet feature without maintaining duplicate GeoJSON.\n// Paint animation is deterministic; geometry slicing is not. For a source-to-end line draw,\n// bake the selected feature to ordered GeoJSON and use RiverReveal.tsx instead.\n\ntype VectorLayerType = 'fill' | 'line' | 'circle' | 'symbol';\n\nexport type MapTilerVectorElement = {\n\tid: string;\n\tsourceLayer: string;\n\ttype: VectorLayerType;\n\tfilter?: unknown[];\n\tminzoom?: number;\n\tmaxzoom?: number;\n\tlayout?: Record<string, unknown>;\n\tpaint: Record<string, unknown>;\n};\n\nconst SOURCE_ID = 'maptiler-planet';\n\nexport const addMapTilerVectorElement = (\n\tmap: any,\n\tapiKey: string,\n\telement: MapTilerVectorElement,\n\tbeforeId?: string,\n) => {\n\tif (!map.getSource(SOURCE_ID)) {\n\t\tmap.addSource(SOURCE_ID, {\n\t\t\ttype: 'vector',\n\t\t\turl: `https://api.maptiler.com/tiles/v3/tiles.json?key=${apiKey}`,\n\t\t});\n\t}\n\n\tif (map.getLayer(element.id)) return;\n\n\tmap.addLayer(\n\t\t{\n\t\t\tid: element.id,\n\t\t\ttype: element.type,\n\t\t\tsource: SOURCE_ID,\n\t\t\t'source-layer': element.sourceLayer,\n\t\t\t...(element.filter ? {filter: element.filter} : {}),\n\t\t\t...(element.minzoom === undefined ? {} : {minzoom: element.minzoom}),\n\t\t\t...(element.maxzoom === undefined ? {} : {maxzoom: element.maxzoom}),\n\t\t\t...(element.layout ? {layout: element.layout} : {}),\n\t\t\tpaint: element.paint,\n\t\t},\n\t\tbeforeId,\n\t);\n};\n\nexport const setVectorElementPaint = (\n\tmap: any,\n\tlayerId: string,\n\tpaint: Record<string, unknown>,\n) => {\n\tfor (const [property, value] of Object.entries(paint)) {\n\t\tmap.setPaintProperty(layerId, property, value);\n\t}\n};\n\n// Example:\n//\n// addMapTilerVectorElement(map, process.env.REMOTION_MAPTILER_KEY!, {\n//   id: \"story-river\",\n//   sourceLayer: \"waterway\",\n//   type: \"line\",\n//   filter: [\n//     \"all\",\n//     [\"==\", [\"get\", \"class\"], \"river\"],\n//     [\"==\", [\"coalesce\", [\"get\", \"name_en\"], [\"get\", \"name\"]], \"Yarlung Tsangpo\"],\n//   ],\n//   layout: {\"line-cap\": \"round\", \"line-join\": \"round\"},\n//   paint: {\"line-color\": \"#E8F7FF\", \"line-width\": 3, \"line-opacity\": 0},\n// });\n//\n// Per Remotion frame:\n// setVectorElementPaint(map, \"story-river\", {\n//   \"line-opacity\": reveal,\n//   \"line-width\": 2 + reveal * 2,\n// });\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx","content":"import * as maptilersdk from '@maptiler/sdk';\nimport * as turf from '@turf/turf';\nimport React, {useEffect, useRef, useState} from 'react';\nimport '@maptiler/sdk/dist/maptiler-sdk.css';\nimport {\n\tAbsoluteFill,\n\tEasing,\n\tcontinueRender,\n\tdelayRender,\n\tinterpolate,\n\tuseCurrentFrame,\n\tuseVideoConfig,\n} from 'remotion';\nimport {CountryLabel} from './CountryLabel';\nimport countryMeta from './sample-data/country-meta.json';\nimport flowCoords from './sample-data/yarlung-flow.json';\nimport {COLORS, COUNTRY, COUNTRY_DARK, FILL_OPACITY} from './tokens';\n\n// Sample route reveal. Replace the imported sample geometry, names, timing, and visual tokens in the\n// consuming production. The renderer stays static; approved centre/zoom motion is a CSS plate transform.\n\nmaptilersdk.config.apiKey = process.env.REMOTION_MAPTILER_KEY as string;\n\nconst line = turf.lineString(flowCoords as [number, number][]);\nconst lineKm = turf.length(line);\n\nconst START = {\n\tcenter: [89.6, 27.7] as [number, number],\n\tzoom: 4.75,\n\tpitch: 0,\n\tbearing: 0,\n};\nconst END = {\n\tcenter: [90.2, 27.0] as [number, number],\n\tzoom: 5.05,\n\tpitch: 0,\n\tbearing: 0,\n};\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\nconst clamp01 = (v: number) => Math.max(0, Math.min(1, v));\n\nconst ORDER = ['china', 'india', 'bangladesh'] as const;\ntype Country = (typeof ORDER)[number];\nconst META = countryMeta as Record<\n\tCountry,\n\t{stop: number; anchor: [number, number]; border: [number, number][][]}\n>;\nconst countryPolygons = {\n\ttype: 'FeatureCollection' as const,\n\tfeatures: ORDER.map((country) => ({\n\t\ttype: 'Feature' as const,\n\t\tproperties: {country},\n\t\tgeometry: {\n\t\t\ttype: 'MultiPolygon' as const,\n\t\t\tcoordinates: META[country].border.map((ring) => [ring]),\n\t\t},\n\t})),\n};\n\n// Pre-build each country's border as ordered segments with cumulative lengths (for the multi-segment draw).\nconst DRAW = Object.fromEntries(\n\tORDER.map((c) => {\n\t\tconst segLines = META[c].border.map((s) => turf.lineString(s));\n\t\tconst segLen = segLines.map((l) => turf.length(l));\n\t\tconst cum: number[] = [];\n\t\tlet acc = 0;\n\t\tfor (const L of segLen) {\n\t\t\tcum.push(acc);\n\t\t\tacc += L;\n\t\t}\n\t\treturn [c, {segLines, segLen, cum, total: acc}];\n\t}),\n) as Record<\n\tCountry,\n\t{segLines: any[]; segLen: number[]; cum: number[]; total: number}\n>;\n\n// Reveal the portion of the border between fromKm and toKm as a MultiLineString (no joins across gaps).\nconst sliceBorder = (\n\td: (typeof DRAW)[Country],\n\tfromKm: number,\n\ttoKm: number,\n) => {\n\tconst out: number[][][] = [];\n\tfor (let i = 0; i < d.segLines.length; i++) {\n\t\tconst start = d.cum[i],\n\t\t\tend = start + d.segLen[i];\n\t\tconst a = Math.max(fromKm, start),\n\t\t\tb = Math.min(toKm, end);\n\t\tif (b - a <= 0.0008) continue;\n\t\tout.push(\n\t\t\tturf.lineSliceAlong(d.segLines[i], a - start, b - start).geometry\n\t\t\t\t.coordinates,\n\t\t);\n\t}\n\treturn {\n\t\ttype: 'Feature' as const,\n\t\tproperties: {},\n\t\tgeometry: {type: 'MultiLineString' as const, coordinates: out},\n\t};\n};\nconst EMPTY = {\n\ttype: 'Feature' as const,\n\tproperties: {},\n\tgeometry: {type: 'MultiLineString' as const, coordinates: [] as number[][][]},\n};\n\n// --- Timing (seconds). River draws over [RIVER_START, RIVER_END]; each country triggers when the river\n// reaches it (stop · span), then runs border → fill → label. Beat length is derived from these. ---\nconst RIVER_START = 0.3;\nconst RIVER_END = 8.0;\nconst BORDER_S = 2.5;\nconst FILL_S = 1.0;\nconst LABEL_S = 0.7;\nconst trigger = (c: Country) =>\n\tRIVER_START + META[c].stop * (RIVER_END - RIVER_START);\n\nexport const RiverReveal: React.FC = () => {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst started = useRef(false);\n\tconst frame = useCurrentFrame();\n\tconst {fps, durationInFrames, width, height} = useVideoConfig();\n\tconst [map, setMap] = useState<any>(null);\n\tconst [labels, setLabels] = useState<\n\t\tRecord<string, {x: number; y: number; reveal: number}>\n\t>({});\n\tconst [plate, setPlate] = useState({x: 0, y: 0, scale: 1});\n\tconst [handle] = useState(() => delayRender('maptiler init A'));\n\n\tuseEffect(() => {\n\t\tif (!ref.current || started.current) return;\n\t\tstarted.current = true;\n\t\tconst m = new maptilersdk.Map({\n\t\t\tcontainer: ref.current,\n\t\t\tstyle: maptilersdk.MapStyle.BASIC,\n\t\t\tcenter: END.center,\n\t\t\tzoom: Math.max(START.zoom, END.zoom),\n\t\t\tpitch: END.pitch,\n\t\t\tbearing: END.bearing,\n\t\t\tinteractive: false,\n\t\t\tattributionControl: true,\n\t\t\tnavigationControl: false,\n\t\t\tgeolocateControl: false,\n\t\t\tmaptilerLogo: true,\n\t\t\tfadeDuration: 0,\n\t\t\tcanvasContextAttributes: {preserveDrawingBuffer: true},\n\t\t} as any);\n\n\t\tm.on('load', () => {\n\t\t\t// Strip basemap labels (symbols) AND the inner admin-1 borders ('Other border[ dash]',\n\t\t\t// admin_level 3–10) to cut basemap clutter. Keep country + disputed borders.\n\t\t\tfor (const l of m.getStyle().layers as any[])\n\t\t\t\tif (l.type === 'symbol' || /other border/i.test(l.id))\n\t\t\t\t\tm.removeLayer(l.id);\n\n\t\t\tm.addSource('countries', {type: 'geojson', data: countryPolygons});\n\t\t\tfor (const c of ORDER) {\n\t\t\t\tm.addLayer({\n\t\t\t\t\tid: `fill-${c}`,\n\t\t\t\t\ttype: 'fill',\n\t\t\t\t\tsource: 'countries',\n\t\t\t\t\tfilter: ['==', ['get', 'country'], c],\n\t\t\t\t\tpaint: {'fill-color': COUNTRY[c], 'fill-opacity': 0},\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Per country: just the border that draws on, settled to a darker shade of the country colour\n\t\t\t// (the electricity now lives on the river, not the borders).\n\t\t\tfor (const c of ORDER) {\n\t\t\t\tm.addSource(`trail-${c}`, {type: 'geojson', data: EMPTY});\n\t\t\t\tm.addLayer({\n\t\t\t\t\tid: `trail-${c}`,\n\t\t\t\t\ttype: 'line',\n\t\t\t\t\tsource: `trail-${c}`,\n\t\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\t'line-color': COUNTRY_DARK[c],\n\t\t\t\t\t\t'line-width': 2,\n\t\t\t\t\t\t'line-opacity': 0.95,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst seed = turf.lineSliceAlong(\n\t\t\t\tline,\n\t\t\t\t0,\n\t\t\t\tMath.max(0.001, lineKm * 0.001),\n\t\t\t);\n\t\t\tm.addSource('river', {type: 'geojson', data: seed});\n\t\t\tm.addSource('river-head', {type: 'geojson', data: seed});\n\t\t\t// Electric water: soft blue glow → icy core → white-hot leading head with its own glow.\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-glow',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': '#49C6FF',\n\t\t\t\t\t'line-width': 11,\n\t\t\t\t\t'line-opacity': 0.32,\n\t\t\t\t\t'line-blur': 6,\n\t\t\t\t},\n\t\t\t});\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-line',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {'line-color': COLORS.river, 'line-width': 3},\n\t\t\t});\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-headglow',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river-head',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': COLORS.riverHeadGlow,\n\t\t\t\t\t'line-width': 16,\n\t\t\t\t\t'line-opacity': 0,\n\t\t\t\t\t'line-blur': 9,\n\t\t\t\t},\n\t\t\t});\n\t\t\tm.addLayer({\n\t\t\t\tid: 'river-head',\n\t\t\t\ttype: 'line',\n\t\t\t\tsource: 'river-head',\n\t\t\t\tlayout: {'line-cap': 'round', 'line-join': 'round'},\n\t\t\t\tpaint: {\n\t\t\t\t\t'line-color': COLORS.riverHead,\n\t\t\t\t\t'line-width': 4.5,\n\t\t\t\t\t'line-opacity': 0,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tm.once('idle', () => {\n\t\t\t\tsetMap(m);\n\t\t\t\tcontinueRender(handle);\n\t\t\t});\n\t\t});\n\t}, [handle]);\n\n\tuseEffect(() => {\n\t\tif (!map) return;\n\t\tconst h = delayRender(`frame A ${frame}`);\n\t\tconst t = frame / fps; // seconds\n\t\tconst tt = interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t});\n\n\t\t// River draw\n\t\tconst reveal = interpolate(t, [RIVER_START, RIVER_END], [0, 1], {\n\t\t\textrapolateLeft: 'clamp',\n\t\t\textrapolateRight: 'clamp',\n\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t});\n\t\tconst riverDrawnKm = lineKm * reveal;\n\t\t(map.getSource('river') as any)?.setData(\n\t\t\tturf.lineSliceAlong(line, 0, Math.max(0.001, riverDrawnKm)),\n\t\t);\n\t\t// Electric draw-head leading the river: white-hot core + glow, fading out once the river completes.\n\t\tconst riverHeadKm = lineKm * 0.03;\n\t\t(map.getSource('river-head') as any)?.setData(\n\t\t\tturf.lineSliceAlong(\n\t\t\t\tline,\n\t\t\t\tMath.max(0, riverDrawnKm - riverHeadKm),\n\t\t\t\tMath.max(0.001, riverDrawnKm),\n\t\t\t),\n\t\t);\n\t\tlet riverHeadFade = 0;\n\t\tif (reveal > 0.002 && reveal < 0.999) riverHeadFade = 1;\n\t\telse if (reveal >= 0.999)\n\t\t\triverHeadFade = 1 - clamp01((t - RIVER_END) / 0.5);\n\t\tmap.setPaintProperty(\n\t\t\t'river-headglow',\n\t\t\t'line-opacity',\n\t\t\t0.85 * riverHeadFade,\n\t\t);\n\t\tmap.setPaintProperty('river-head', 'line-opacity', riverHeadFade);\n\n\t\tconst camera = {\n\t\t\tcenter: [\n\t\t\t\tlerp(START.center[0], END.center[0], tt),\n\t\t\t\tlerp(START.center[1], END.center[1], tt),\n\t\t\t] as [number, number],\n\t\t\tzoom: lerp(START.zoom, END.zoom, tt),\n\t\t};\n\t\tconst cameraPoint = map.project(camera.center);\n\t\tconst plateScale = 2 ** (camera.zoom - Math.max(START.zoom, END.zoom));\n\t\tconst plateX = width / 2 - cameraPoint.x * plateScale;\n\t\tconst plateY = height / 2 - cameraPoint.y * plateScale;\n\n\t\tconst pos: Record<string, {x: number; y: number; reveal: number}> = {};\n\t\tfor (const c of ORDER) {\n\t\t\tconst d = DRAW[c];\n\t\t\tconst lt = t - trigger(c); // local seconds since this country triggered\n\n\t\t\t// 1) border draws on (constant duration), settling to a darker shade — no electric head\n\t\t\tconst bp = interpolate(clamp01(lt / BORDER_S), [0, 1], [0, 1], {\n\t\t\t\teasing: Easing.bezier(0.645, 0.045, 0.355, 1),\n\t\t\t});\n\t\t\t(map.getSource(`trail-${c}`) as any)?.setData(\n\t\t\t\tbp <= 0 ? EMPTY : sliceBorder(d, 0, d.total * bp),\n\t\t\t);\n\n\t\t\t// 2) fill blooms in (overshoot then settle) after the border completes\n\t\t\tconst fp = clamp01((lt - BORDER_S) / FILL_S);\n\t\t\tconst fo = interpolate(\n\t\t\t\tfp,\n\t\t\t\t[0, 0.6, 1],\n\t\t\t\t[0, FILL_OPACITY * 1.25, FILL_OPACITY],\n\t\t\t\t{\n\t\t\t\t\textrapolateLeft: 'clamp',\n\t\t\t\t\textrapolateRight: 'clamp',\n\t\t\t\t\teasing: Easing.bezier(0.3333333333333333, 1, 0.6666666666666666, 1),\n\t\t\t\t},\n\t\t\t);\n\t\t\tmap.setPaintProperty(`fill-${c}`, 'fill-opacity', fp <= 0 ? 0 : fo);\n\n\t\t\t// 3) label rises in after the fill\n\t\t\tconst lp = clamp01((lt - BORDER_S - FILL_S) / LABEL_S);\n\t\t\tconst p = map.project(META[c].anchor);\n\t\t\tpos[c] = {\n\t\t\t\tx: p.x * plateScale + plateX,\n\t\t\t\ty: p.y * plateScale + plateY,\n\t\t\t\treveal: lp,\n\t\t\t};\n\t\t}\n\t\tsetLabels(pos);\n\n\t\tsetPlate({x: plateX, y: plateY, scale: plateScale});\n\t\tmap.once('idle', () => continueRender(h));\n\t\tmap.triggerRepaint();\n\t}, [map, frame, fps, durationInFrames, width, height]);\n\n\treturn (\n\t\t<AbsoluteFill style={{backgroundColor: COLORS.bg}}>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: width * 2,\n\t\t\t\t\theight: height * 2,\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttransform: `translate(${plate.x}px, ${plate.y}px) scale(${plate.scale})`,\n\t\t\t\t\ttransformOrigin: '0 0',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<AbsoluteFill style={{pointerEvents: 'none'}}>\n\t\t\t\t{ORDER.map((c) =>\n\t\t\t\t\tlabels[c] ? (\n\t\t\t\t\t\t<CountryLabel\n\t\t\t\t\t\t\tkey={c}\n\t\t\t\t\t\t\tname={c.toUpperCase()}\n\t\t\t\t\t\t\tcolor={COUNTRY[c]}\n\t\t\t\t\t\t\treveal={labels[c].reveal}\n\t\t\t\t\t\t\tx={labels[c].x}\n\t\t\t\t\t\t\ty={labels[c].y}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null,\n\t\t\t\t)}\n\t\t\t</AbsoluteFill>\n\t\t</AbsoluteFill>\n\t);\n};\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json","content":"{\n\t\"china\": {\n\t\t\"stop\": 0,\n\t\t\"anchor\": [87.78260869565217, 30.663811291452628],\n\t\t\"border\": [\n\t\t\t[\n\t\t\t\t[104, 22.607404598007214],\n\t\t\t\t[103.99006555200009, 22.58534088100008],\n\t\t\t\t[103.98556970200013, 22.57025136400007],\n\t\t\t\t[103.98556970200013, 22.554541728000103],\n\t\t\t\t[103.98737837800013, 22.540175680000104],\n\t\t\t\t[103.9853629970001, 22.527153219000056],\n\t\t\t\t[103.97399418100008, 22.515267639000044],\n\t\t\t\t[103.95952478000004, 22.507102763000105],\n\t\t\t\t[103.95094649200013, 22.516456197000068],\n\t\t\t\t[103.94071455900007, 22.52467275],\n\t\t\t\t[103.92541833500007, 22.528238424000065],\n\t\t\t\t[103.91704675300014, 22.533251038000017],\n\t\t\t\t[103.90278405800007, 22.55857249000009],\n\t\t\t\t[103.89461918200004, 22.56921783500009],\n\t\t\t\t[103.88867639200004, 22.571749980000064],\n\t\t\t\t[103.87265669800007, 22.573610332000086],\n\t\t\t\t[103.86681726100005, 22.575419007000065],\n\t\t\t\t[103.84418298400004, 22.599293519000057],\n\t\t\t\t[103.8363281660001, 22.60275583900001],\n\t\t\t\t[103.82966190600007, 22.609163717000044],\n\t\t\t\t[103.80966312700014, 22.638722636000082],\n\t\t\t\t[103.80532230700004, 22.647404277000035],\n\t\t\t\t[103.79421187400004, 22.659444886000088],\n\t\t\t\t[103.72641239500012, 22.716288961000046],\n\t\t\t\t[103.65850956200006, 22.79320933000004],\n\t\t\t\t[103.64693404200005, 22.799048768000134],\n\t\t\t\t[103.60383589700012, 22.776026917000067],\n\t\t\t\t[103.59003829000005, 22.76801707],\n\t\t\t\t[103.58254520700012, 22.755795593000087],\n\t\t\t\t[103.57680912300009, 22.740835267000122],\n\t\t\t\t[103.56833418800005, 22.724970602000027],\n\t\t\t\t[103.5471468500001, 22.70068267900011],\n\t\t\t\t[103.54456302900013, 22.691019185000087],\n\t\t\t\t[103.54992302200003, 22.64866216800003],\n\t\t\t\t[103.55091923000003, 22.640789694000134],\n\t\t\t\t[103.54621667500004, 22.631436259000097],\n\t\t\t\t[103.5142806400001, 22.587356262000114],\n\t\t\t\t[103.5036352950001, 22.581413473000012],\n\t\t\t\t[103.48544519000006, 22.584100647000028],\n\t\t\t\t[103.47314620000003, 22.59164540600007],\n\t\t\t\t[103.44751469000005, 22.61825876900012],\n\t\t\t\t[103.41092777500012, 22.674741109000067],\n\t\t\t\t[103.40431319200013, 22.68879709900007],\n\t\t\t\t[103.4023494870001, 22.706522115],\n\t\t\t\t[103.40400313400005, 22.723885397000018],\n\t\t\t\t[103.4017293710001, 22.737838033000102],\n\t\t\t\t[103.38751835200003, 22.745176087000104],\n\t\t\t\t[103.37894006300013, 22.756777446000044],\n\t\t\t\t[103.36875980700006, 22.767138570000057],\n\t\t\t\t[103.35708093300008, 22.776026917000067],\n\t\t\t\t[103.34416182500007, 22.782977397000067],\n\t\t\t\t[103.32157922400012, 22.790392965000095],\n\t\t\t\t[103.30964196800011, 22.78793833400003],\n\t\t\t\t[103.2699544680001, 22.723265279000046],\n\t\t\t\t[103.25248783400008, 22.67856516500011],\n\t\t\t\t[103.2448913980001, 22.66869496700012],\n\t\t\t\t[103.22840661600003, 22.655827536000018],\n\t\t\t\t[103.16846195500011, 22.626475321000058],\n\t\t\t\t[103.14174524000009, 22.60704498300008],\n\t\t\t\t[103.13001469000005, 22.57795115100005],\n\t\t\t\t[103.13259851100008, 22.569786276000045],\n\t\t\t\t[103.14469079600008, 22.55578196300003],\n\t\t\t\t[103.14572432500006, 22.54555002900007],\n\t\t\t\t[103.14200362100013, 22.537798564000056],\n\t\t\t\t[103.09125736500005, 22.50508738200007],\n\t\t\t\t[103.07441084800007, 22.49816274000007],\n\t\t\t\t[103.05828780100006, 22.495475566000053],\n\t\t\t\t[103.04418013600008, 22.486483867000018],\n\t\t\t\t[103.04485192900006, 22.4728929650001],\n\t\t\t\t[103.04908939600011, 22.45682159400006],\n\t\t\t\t[103.04505863500009, 22.440543518000126],\n\t\t\t\t[103.02903894100007, 22.43015655500001],\n\t\t\t\t[103.00893680900009, 22.43031158500004],\n\t\t\t\t[102.9890930580001, 22.437597962000027],\n\t\t\t\t[102.95653690600005, 22.45971547400005],\n\t\t\t\t[102.9195882570001, 22.469223938000127],\n\t\t\t\t[102.90258671100008, 22.47723378500008],\n\t\t\t\t[102.89369836400004, 22.487362366000056],\n\t\t\t\t[102.85928186100011, 22.550510966],\n\t\t\t\t[102.85313236500014, 22.568442689000065],\n\t\t\t\t[102.8451741940001, 22.585237529000054],\n\t\t\t\t[102.83184167500008, 22.599706930000067],\n\t\t\t\t[102.81339318800013, 22.608698629000017],\n\t\t\t\t[102.77122522000008, 22.617793681000094],\n\t\t\t\t[102.75189823400007, 22.625286764000023],\n\t\t\t\t[102.69272871900006, 22.6705036420001],\n\t\t\t\t[102.67216149900008, 22.67835845900005],\n\t\t\t\t[102.63226729400003, 22.684973043000056],\n\t\t\t\t[102.61247522000008, 22.691587626000043],\n\t\t\t\t[102.60611901900012, 22.696703593000038],\n\t\t\t\t[102.59118453000008, 22.712568258000132],\n\t\t\t\t[102.58668868000007, 22.716082256000092],\n\t\t\t\t[102.5761983650001, 22.713808493000087],\n\t\t\t\t[102.57035892700003, 22.70709055600004],\n\t\t\t\t[102.56575972500008, 22.699545797],\n\t\t\t\t[102.55836999500008, 22.694946595000047],\n\t\t\t\t[102.53578739400012, 22.695825094],\n\t\t\t\t[102.52891442900005, 22.707814026000037],\n\t\t\t\t[102.52633060700003, 22.72595245400008],\n\t\t\t\t[102.51578861500008, 22.745176087000104],\n\t\t\t\t[102.49434289600009, 22.76039479600003],\n\t\t\t\t[102.46778121000006, 22.76858551000005],\n\t\t\t\t[102.44271814000012, 22.765174866000038],\n\t\t\t\t[102.42561324100006, 22.745305278000032],\n\t\t\t\t[102.42561324100006, 22.745176087000104],\n\t\t\t\t[102.41522627800009, 22.7098294070001],\n\t\t\t\t[102.4072681070001, 22.693447978000037],\n\t\t\t\t[102.39496911700007, 22.680528870000032],\n\t\t\t\t[102.38463383000004, 22.677738343000087],\n\t\t\t\t[102.37316166200003, 22.67835845900005],\n\t\t\t\t[102.36272302300011, 22.677428283],\n\t\t\t\t[102.35585005700005, 22.669935201000058],\n\t\t\t\t[102.35626346800007, 22.658721415000016],\n\t\t\t\t[102.3633431400001, 22.65143503800003],\n\t\t\t\t[102.37269657400003, 22.64575063100007],\n\t\t\t\t[102.37858768800004, 22.639084371000067],\n\t\t\t\t[102.38246342000008, 22.63081614200003],\n\t\t\t\t[102.38432377100008, 22.628852437000077],\n\t\t\t\t[102.37688236500003, 22.615571595000077],\n\t\t\t\t[102.25254886900007, 22.495475566000053],\n\t\t\t\t[102.24252364200004, 22.477182109000083],\n\t\t\t\t[102.23663252800003, 22.443437398000114],\n\t\t\t\t[102.23130985600011, 22.426332500000072],\n\t\t\t\t[102.2180290120001, 22.410674540000016],\n\t\t\t\t[102.20355961100006, 22.41248321500011],\n\t\t\t\t[102.18655806500004, 22.421061503000132],\n\t\t\t\t[102.16454390500007, 22.425505676000043],\n\t\t\t\t[102.14702559400007, 22.421061503000132],\n\t\t\t\t[102.12883549000003, 22.410881246000073],\n\t\t\t\t[102.11865523300008, 22.39754872600004],\n\t\t\t\t[102.10734543400008, 22.39754872600004],\n\t\t\t\t[102.10062015800008, 22.405765280000068],\n\t\t\t\t[102.0999483650001, 22.414860331000042],\n\t\t\t\t[102.09534916200005, 22.423128561000098],\n\t\t\t\t[102.08553064000006, 22.429123027000017],\n\t\t\t\t[102.07591882300005, 22.432430319000034],\n\t\t\t\t[102.01457889800008, 22.446072896000132],\n\t\t\t\t[101.9949935300001, 22.4474164840001],\n\t\t\t\t[101.97421960500003, 22.445142720000078],\n\t\t\t\t[101.95287723800004, 22.436874491000125],\n\t\t\t\t[101.90936568200004, 22.435892639000073],\n\t\t\t\t[101.89164066600011, 22.42969146700007],\n\t\t\t\t[101.88151208500005, 22.412173157000026],\n\t\t\t\t[101.87727461800011, 22.39186431900002],\n\t\t\t\t[101.86792118300008, 22.378841858000058],\n\t\t\t\t[101.84259973100006, 22.38333770800007],\n\t\t\t\t[101.81779504400004, 22.406333720000035],\n\t\t\t\t[101.7848771570001, 22.472221171000044],\n\t\t\t\t[101.75505985600012, 22.49552724300007],\n\t\t\t\t[101.7506156820001, 22.496044007000094],\n\t\t\t\t[101.74177901200011, 22.496044007000094],\n\t\t\t\t[101.7131502680001, 22.491548157000082],\n\t\t\t\t[101.68912072800009, 22.478887431000047],\n\t\t\t\t[101.66865686100004, 22.46229929700003],\n\t\t\t\t[101.65454919500007, 22.446124573000034],\n\t\t\t\t[101.64509240800004, 22.42421376500009],\n\t\t\t\t[101.64416223200004, 22.4040082800001],\n\t\t\t\t[101.64571252500008, 22.384526266000094],\n\t\t\t\t[101.64369714400004, 22.364682516000116],\n\t\t\t\t[101.64111332200014, 22.363287252000035],\n\t\t\t\t[101.62369836500011, 22.346647441000115],\n\t\t\t\t[101.6225098060001, 22.342358297000047],\n\t\t\t\t[101.61987430900007, 22.32644195500002],\n\t\t\t\t[101.60612837700012, 22.284842427000015],\n\t\t\t\t[101.60121911700008, 22.27698761000009],\n\t\t\t\t[101.58798995000012, 22.27135487900007],\n\t\t\t\t[101.5757426350001, 22.27311187800005],\n\t\t\t\t[101.56370202700009, 22.276780905000024],\n\t\t\t\t[101.55098962400007, 22.276677552000095],\n\t\t\t\t[101.54065433700003, 22.271458232000086],\n\t\t\t\t[101.5317143150001, 22.263396708000087],\n\t\t\t\t[101.51574629800007, 22.245361634000105],\n\t\t\t\t[101.51822676600005, 22.22820505800003],\n\t\t\t\t[101.54902592000013, 22.19353017200011],\n\t\t\t\t[101.56153161700013, 22.17611521400009],\n\t\t\t\t[101.56695764200009, 22.149346822000027],\n\t\t\t\t[101.5618416750001, 22.13007151300006],\n\t\t\t\t[101.55502038600014, 22.112398173000074],\n\t\t\t\t[101.55543379800014, 22.090332337000078],\n\t\t\t\t[101.56494226100006, 22.069506734000115],\n\t\t\t\t[101.59217574100006, 22.02811391300007],\n\t\t\t\t[101.60039229400007, 22.007495016000078],\n\t\t\t\t[101.60680017100003, 21.96760081000012],\n\t\t\t\t[101.61630863500011, 21.953648173000133],\n\t\t\t\t[101.6381160890001, 21.940884094000054],\n\t\t\t\t[101.67366947500005, 21.931375631],\n\t\t\t\t[101.68059411600007, 21.9226423140001],\n\t\t\t\t[101.68245446800006, 21.91483917300009],\n\t\t\t\t[101.68307458600003, 21.907139384000104],\n\t\t\t\t[101.68586511300009, 21.898612773000067],\n\t\t\t\t[101.70870609600007, 21.869570618000083],\n\t\t\t\t[101.72126346900012, 21.844352519000054],\n\t\t\t\t[101.72617272900004, 21.837272848000012],\n\t\t\t\t[101.7510807700001, 21.81613718700008],\n\t\t\t\t[101.75154585800004, 21.806370341000033],\n\t\t\t\t[101.73165043200004, 21.75050811800004],\n\t\t\t\t[101.72798140500004, 21.7326797490001],\n\t\t\t\t[101.72854984500009, 21.717538554000086],\n\t\t\t\t[101.73278731300013, 21.71144073500004],\n\t\t\t\t[101.74911706500006, 21.698056539000092],\n\t\t\t\t[101.75480147300004, 21.689788310000054],\n\t\t\t\t[101.75562829600005, 21.68002146400009],\n\t\t\t\t[101.75232100500006, 21.659144186000034],\n\t\t\t\t[101.75593835500013, 21.648653870000075],\n\t\t\t\t[101.77082116700007, 21.638835348],\n\t\t\t\t[101.78952803600004, 21.634029440000077],\n\t\t\t\t[101.80384240700005, 21.62591623900009],\n\t\t\t\t[101.8061678470001, 21.60596913700006],\n\t\t\t\t[101.79355879700006, 21.588244121000045],\n\t\t\t\t[101.77268151900006, 21.582508036],\n\t\t\t\t[101.75092574100006, 21.57966583300002],\n\t\t\t\t[101.73619795800005, 21.570880839000026],\n\t\t\t\t[101.73475101700006, 21.554396057000062],\n\t\t\t\t[101.74823856600005, 21.514501852000123],\n\t\t\t\t[101.74425948100009, 21.495588277000067],\n\t\t\t\t[101.72968672700011, 21.474245911000068],\n\t\t\t\t[101.7255526130001, 21.37538889600002],\n\t\t\t\t[101.71557906100008, 21.338181865000095],\n\t\t\t\t[101.71511397300003, 21.321128642000062],\n\t\t\t\t[101.72250370300003, 21.30423044800007],\n\t\t\t\t[101.73650801600007, 21.292293193000134],\n\t\t\t\t[101.7885461840001, 21.274206442000022],\n\t\t\t\t[101.80115523300003, 21.267075094000077],\n\t\t\t\t[101.81226566600003, 21.25813507100007],\n\t\t\t\t[101.82022383600008, 21.247283020000012],\n\t\t\t\t[101.82373783400004, 21.234467265000134],\n\t\t\t\t[101.8228076580001, 21.224131979000035],\n\t\t\t\t[101.82149033400009, 21.221071138000084],\n\t\t\t\t[101.81929366100013, 21.215967102000022],\n\t\t\t\t[101.81329919500013, 21.209559225000064],\n\t\t\t\t[101.80523767100004, 21.204494934000095],\n\t\t\t\t[101.79603926600004, 21.20294464100006],\n\t\t\t\t[101.77356001800013, 21.207388815000073],\n\t\t\t\t[101.76007246900008, 21.19596832300006],\n\t\t\t\t[101.7635864660001, 21.18465118400009],\n\t\t\t\t[101.77020105000003, 21.170440166000034],\n\t\t\t\t[101.76845334900003, 21.16044957700005],\n\t\t\t\t[101.76673872900005, 21.150648092000054],\n\t\t\t\t[101.75599003200006, 21.143258362000054],\n\t\t\t\t[101.73748986800013, 21.137573954000104],\n\t\t\t\t[101.71790450000009, 21.134473369000048],\n\t\t\t\t[101.70426192200011, 21.135093485000127],\n\t\t\t\t[101.68829390500014, 21.145842183000056],\n\t\t\t\t[101.67015547700004, 21.17705474900002],\n\t\t\t\t[101.65511763500012, 21.18919871100003],\n\t\t\t\t[101.63594567900003, 21.189457092000097],\n\t\t\t\t[101.59651656100004, 21.173385722000134],\n\t\t\t\t[101.58178877800003, 21.175659485000054],\n\t\t\t\t[101.57724125200008, 21.18516794800003],\n\t\t\t\t[101.58096195500008, 21.194728089000037],\n\t\t\t\t[101.58664636300006, 21.204236552000012],\n\t\t\t\t[101.58819665600004, 21.21333160400009],\n\t\t\t\t[101.58395918800011, 21.2243903600001],\n\t\t\t\t[101.57967004400012, 21.227594299000074],\n\t\t\t\t[101.57290043100011, 21.228162740000116],\n\t\t\t\t[101.53910404500004, 21.23885976100003],\n\t\t\t\t[101.51760664900007, 21.242632141000044],\n\t\t\t\t[101.49512740100005, 21.2428388470001],\n\t\t\t\t[101.38149092600008, 21.22247833200008],\n\t\t\t\t[101.36226729400005, 21.215812073000066],\n\t\t\t\t[101.31389815300014, 21.184754537000018],\n\t\t\t\t[101.29271081600007, 21.176072897000054],\n\t\t\t\t[101.27529585800005, 21.174109192000046],\n\t\t\t\t[101.25974125100004, 21.179483541000096],\n\t\t\t\t[101.24434167500004, 21.192867737000128],\n\t\t\t\t[101.23478153500014, 21.206251933000075],\n\t\t\t\t[101.22036381100003, 21.23369211800012],\n\t\t\t\t[101.20899499500013, 21.245526021000032],\n\t\t\t\t[101.21907189900008, 21.28247467100006],\n\t\t\t\t[101.22036381100003, 21.296272278000018],\n\t\t\t\t[101.2184001060001, 21.29994130500002],\n\t\t\t\t[101.20951176000005, 21.308674622000083],\n\t\t\t\t[101.20744470200003, 21.31482411700007],\n\t\t\t\t[101.22284427900007, 21.33508127800006],\n\t\t\t\t[101.23478153500014, 21.363658345000132],\n\t\t\t\t[101.23312788900006, 21.371719869000017],\n\t\t\t\t[101.23080244900007, 21.371771546000033],\n\t\t\t\t[101.22646163000007, 21.370893046],\n\t\t\t\t[101.20796146700013, 21.38350209600013],\n\t\t\t\t[101.17912601800003, 21.39817820200001],\n\t\t\t\t[101.17142622900013, 21.403397522000134],\n\t\t\t\t[101.16827396700006, 21.424533183000065],\n\t\t\t\t[101.18775598100007, 21.505871887000083],\n\t\t\t\t[101.18656742400003, 21.53532745400007],\n\t\t\t\t[101.17452681500004, 21.551657206000115],\n\t\t\t\t[101.15902388500007, 21.5526907350001],\n\t\t\t\t[101.15421797700003, 21.568038635000065],\n\t\t\t\t[101.1577319750001, 21.586228740000095],\n\t\t\t\t[101.16765384900009, 21.600181376000094],\n\t\t\t\t[101.17385502100007, 21.611911926000076],\n\t\t\t\t[101.16672367300004, 21.623280742000063],\n\t\t\t\t[101.1688424080001, 21.637853496000034],\n\t\t\t\t[101.1614526780001, 21.65836903900002],\n\t\t\t\t[101.14925704000007, 21.676765849],\n\t\t\t\t[101.13633793100007, 21.684724019000058],\n\t\t\t\t[101.12765629100005, 21.695162659000104],\n\t\t\t\t[101.12486576400005, 21.74415191700011],\n\t\t\t\t[101.11887129800004, 21.759809876000062],\n\t\t\t\t[101.08280114800004, 21.766734518000064],\n\t\t\t\t[101.06869348200013, 21.76203196200008],\n\t\t\t\t[101.05530928600007, 21.754538880000027],\n\t\t\t\t[101.04290694200012, 21.745392152000065],\n\t\t\t\t[100.99278080300007, 21.71144073500004],\n\t\t\t\t[100.97428064000007, 21.704154358000054],\n\t\t\t\t[100.87749068200003, 21.677334290000047],\n\t\t\t\t[100.83490930200009, 21.657542217000085],\n\t\t\t\t[100.79703047700008, 21.626122946000052],\n\t\t\t\t[100.75661950700004, 21.569847310000043],\n\t\t\t\t[100.70396122300008, 21.51641387900004],\n\t\t\t\t[100.66153487100007, 21.49553660100007],\n\t\t\t\t[100.66132816600003, 21.495329896],\n\t\t\t\t[100.64577356000007, 21.479878642000116],\n\t\t\t\t[100.62174401800007, 21.469078268000075],\n\t\t\t\t[100.57182458500012, 21.45507395500006],\n\t\t\t\t[100.5459863690001, 21.453006897000094],\n\t\t\t\t[100.49710046400003, 21.4617918900001],\n\t\t\t\t[100.4742594810001, 21.45683095300005],\n\t\t\t\t[100.45668949400005, 21.455022278000044],\n\t\t\t\t[100.44346032800013, 21.463497213000053],\n\t\t\t\t[100.43426192300012, 21.478380026000096],\n\t\t\t\t[100.42930098500005, 21.495381572000028],\n\t\t\t\t[100.39912194900006, 21.518894348000018],\n\t\t\t\t[100.38367069500009, 21.527834371000054],\n\t\t\t\t[100.36325850400004, 21.53176178000011],\n\t\t\t\t[100.34196781400004, 21.53036651700002],\n\t\t\t\t[100.32651656100006, 21.524268698000057],\n\t\t\t\t[100.31463098200004, 21.512951559],\n\t\t\t\t[100.30248702000011, 21.49553660100007],\n\t\t\t\t[100.30228031400009, 21.495329896],\n\t\t\t\t[100.28951623500012, 21.483134258000078],\n\t\t\t\t[100.27520186400011, 21.475176087000037],\n\t\t\t\t[100.24409265100007, 21.464530742000036],\n\t\t\t\t[100.23024336800012, 21.45683095300005],\n\t\t\t\t[100.19789392100012, 21.433214824000046],\n\t\t\t\t[100.18714522300007, 21.427892151],\n\t\t\t\t[100.16249556500009, 21.43636708600009],\n\t\t\t\t[100.12833744300008, 21.482359110000075],\n\t\t\t\t[100.1077702230001, 21.49553660100007],\n\t\t\t\t[100.09727990800008, 21.508300680000033],\n\t\t\t\t[100.08999353000007, 21.528919577000025],\n\t\t\t\t[100.08606612200003, 21.550933737000022],\n\t\t\t\t[100.08560103400009, 21.567573548000027],\n\t\t\t\t[100.08864994300012, 21.581836243000012],\n\t\t\t\t[100.0948511150001, 21.59883778900003],\n\t\t\t\t[100.10394616700006, 21.615632629000103],\n\t\t\t\t[100.11572839400009, 21.629481914000067],\n\t\t\t\t[100.12611535700012, 21.6348562620001],\n\t\t\t\t[100.13619226100013, 21.63681996700005],\n\t\t\t\t[100.14373702000006, 21.640023906000025],\n\t\t\t\t[100.14632084200008, 21.649222310000127],\n\t\t\t\t[100.14280684400012, 21.654906718000078],\n\t\t\t\t[100.13515873200004, 21.662348124000076],\n\t\t\t\t[100.12053430200007, 21.673665263000075],\n\t\t\t\t[100.08234541900003, 21.684465638000106],\n\t\t\t\t[99.99671757100003, 21.686119283000053],\n\t\t\t\t[99.96069909700003, 21.70477447500012],\n\t\t\t\t[99.95026045800012, 21.72115590400007],\n\t\t\t\t[99.93920170100012, 21.77701812800005],\n\t\t\t\t[99.92209680200006, 21.812261455000012],\n\t\t\t\t[99.91796268700006, 21.8291596480001],\n\t\t\t\t[99.92018477400006, 21.852000631000024],\n\t\t\t\t[99.95527307100008, 21.924554342000036],\n\t\t\t\t[99.96566003400011, 21.963001608000084],\n\t\t\t\t[99.95046716400009, 21.995351054000068],\n\t\t\t\t[99.9398218180001, 22.005893046000025],\n\t\t\t\t[99.93434411600009, 22.018863831000047],\n\t\t\t\t[99.93491255700013, 22.03250640900005],\n\t\t\t\t[99.94240564000006, 22.04552886900011],\n\t\t\t\t[99.86685469600008, 22.057879537000062],\n\t\t\t\t[99.84783776900008, 22.055037333000072],\n\t\t\t\t[99.84230839000008, 22.047027486],\n\t\t\t\t[99.84173995000003, 22.027080384000087],\n\t\t\t\t[99.83367842700005, 22.01948394800003],\n\t\t\t\t[99.82101770100007, 22.017778626000066],\n\t\t\t\t[99.81342126500004, 22.022997946000075],\n\t\t\t\t[99.80747847600003, 22.03095611600004],\n\t\t\t\t[99.79988204000006, 22.037467347000117],\n\t\t\t\t[99.73916223200007, 22.066767884000072],\n\t\t\t\t[99.72365930200004, 22.07059194000003],\n\t\t\t\t[99.70381555200004, 22.061238505000077],\n\t\t\t\t[99.69379032400013, 22.046924133000076],\n\t\t\t\t[99.68386844900004, 22.039017639000022],\n\t\t\t\t[99.66381799300007, 22.04873280900007],\n\t\t\t\t[99.65927046800005, 22.054572245000045],\n\t\t\t\t[99.65007206200005, 22.071935527000065],\n\t\t\t\t[99.64221724500004, 22.079945374000047],\n\t\t\t\t[99.63353560400009, 22.084751282000056],\n\t\t\t\t[99.53896773300005, 22.106713766000027],\n\t\t\t\t[99.50506799400006, 22.103354798000012],\n\t\t\t\t[99.49039188700004, 22.104336650000064],\n\t\t\t\t[99.43861210200009, 22.12423207600007],\n\t\t\t\t[99.42496952300007, 22.12242340100009],\n\t\t\t\t[99.36492150900006, 22.098858948],\n\t\t\t\t[99.32998824100008, 22.095551656000097],\n\t\t\t\t[99.25288700400006, 22.102786357000056],\n\t\t\t\t[99.2122693280001, 22.112449849000072],\n\t\t\t\t[99.16638065600006, 22.13208689400001],\n\t\t\t\t[99.14446984900007, 22.153532613000053],\n\t\t\t\t[99.17506229700007, 22.168673808000065],\n\t\t\t\t[99.15935266100013, 22.184693502000115],\n\t\t\t\t[99.16638065600006, 22.204640605000023],\n\t\t\t\t[99.1993502200001, 22.245258281000062],\n\t\t\t\t[99.20617150900006, 22.261329651000025],\n\t\t\t\t[99.21836714700004, 22.310008851000063],\n\t\t\t\t[99.22570520000005, 22.321222637000105],\n\t\t\t\t[99.24368859900005, 22.34122141600004],\n\t\t\t\t[99.2483394780001, 22.353675435000028],\n\t\t\t\t[99.24637577300007, 22.365922750000053],\n\t\t\t\t[99.24058801300009, 22.372950745000068],\n\t\t\t\t[99.23738407400003, 22.38013376900001],\n\t\t\t\t[99.24306848200007, 22.39315623000006],\n\t\t\t\t[99.28275598100004, 22.411914775000056],\n\t\t\t\t[99.3450777590001, 22.472841288],\n\t\t\t\t[99.35344934100004, 22.484106751000056],\n\t\t\t\t[99.35779016200013, 22.495475566000053],\n\t\t\t\t[99.35634322100003, 22.50617258700005],\n\t\t\t\t[99.34662805200003, 22.523070781000044],\n\t\t\t\t[99.34414758300005, 22.533251038000017],\n\t\t\t\t[99.34704146400003, 22.55335317000008],\n\t\t\t\t[99.35737675000013, 22.587097881000048],\n\t\t\t\t[99.35499963400008, 22.60854360000006],\n\t\t\t\t[99.30787072800007, 22.719596252000045],\n\t\t\t\t[99.30797408000012, 22.745176087000104],\n\t\t\t\t[99.31696578000003, 22.754116109000037],\n\t\t\t\t[99.32719771300003, 22.76049814900007],\n\t\t\t\t[99.33846317600006, 22.764916484000068],\n\t\t\t\t[99.3506588140001, 22.76814626100004],\n\t\t\t\t[99.3590303960001, 22.77489003500007],\n\t\t\t\t[99.37887414600004, 22.813233948000075],\n\t\t\t\t[99.40357548100008, 22.841061707000065],\n\t\t\t\t[99.41442753200005, 22.856900533000058],\n\t\t\t\t[99.416908, 22.874341330000092],\n\t\t\t\t[99.41122359200006, 22.919248149000097],\n\t\t\t\t[99.41339400300006, 22.930746155000023],\n\t\t\t\t[99.42993046000004, 22.936740622000045],\n\t\t\t\t[99.48450077400008, 22.910256450000063],\n\t\t\t\t[99.51529992700006, 22.90880951000007],\n\t\t\t\t[99.53803755700011, 22.92643117300004],\n\t\t\t\t[99.53462691200008, 22.949323832000076],\n\t\t\t\t[99.49876346900004, 22.99516082800004],\n\t\t\t\t[99.49039188700004, 23.0120073450001],\n\t\t\t\t[99.49163212100012, 23.028207906000105],\n\t\t\t\t[99.49504276500005, 23.043478292000046],\n\t\t\t\t[99.49307906100012, 23.057379252000132],\n\t\t\t\t[99.47819624900006, 23.0657508340001],\n\t\t\t\t[99.40326542100007, 23.068334656],\n\t\t\t\t[99.38104455600006, 23.08164133800001],\n\t\t\t\t[99.35096887200007, 23.11926178000003],\n\t\t\t\t[99.33381229700012, 23.129622904000044],\n\t\t\t\t[99.31407189900006, 23.126470642000086],\n\t\t\t\t[99.30218632100014, 23.112595520000028],\n\t\t\t\t[99.29402144400012, 23.096782532000034],\n\t\t\t\t[99.28482303900012, 23.088152568000098],\n\t\t\t\t[99.26673628800012, 23.08386342400003],\n\t\t\t\t[99.25743452900008, 23.07921254500006],\n\t\t\t\t[99.23614384000007, 23.062314352000058],\n\t\t\t\t[99.22487837700004, 23.056888327000095],\n\t\t\t\t[99.21661014900008, 23.057379252000132],\n\t\t\t\t[99.20958215400009, 23.061539206000063],\n\t\t\t\t[99.20214074800003, 23.067275289000023],\n\t\t\t\t[99.19966027900006, 23.073838196000096],\n\t\t\t\t[99.1993502200001, 23.09226084400011],\n\t\t\t\t[99.1941825770001, 23.09577484200007],\n\t\t\t\t[99.18488081900006, 23.0948446660001],\n\t\t\t\t[99.18271040800005, 23.095206401],\n\t\t\t\t[99.17867964700008, 23.09642079700005],\n\t\t\t\t[99.16400354000007, 23.09768687000009],\n\t\t\t\t[99.1386820890001, 23.105205790000028],\n\t\t\t\t[99.13000044800003, 23.10623931900001],\n\t\t\t\t[99.09217329900008, 23.101510926000017],\n\t\t\t\t[99.0749133710001, 23.10166595500006],\n\t\t\t\t[99.05506962100009, 23.109598287000026],\n\t\t\t\t[99.0392566330001, 23.127142436000085],\n\t\t\t\t[99.03315881300006, 23.146417745000022],\n\t\t\t\t[99.02644087800013, 23.160447897000026],\n\t\t\t\t[99.00938765500007, 23.162153218000086],\n\t\t\t\t[98.99037072800013, 23.160034485000025],\n\t\t\t\t[98.9707336840001, 23.162204895000016],\n\t\t\t\t[98.93342330000013, 23.172152608000104],\n\t\t\t\t[98.85900923700012, 23.179387309000063],\n\t\t\t\t[98.86014611800005, 23.212279358000032],\n\t\t\t\t[98.91068566900009, 23.297597148000094],\n\t\t\t\t[98.89652632700012, 23.323280335000064],\n\t\t\t\t[98.86045617700012, 23.322375997000037],\n\t\t\t\t[98.85342818200007, 23.3248823040001],\n\t\t\t\t[98.85322147600004, 23.334985047000046],\n\t\t\t\t[98.86210982300008, 23.340591940000067],\n\t\t\t\t[98.87378869600013, 23.344571025000064],\n\t\t\t\t[98.88185022000005, 23.34968699200006],\n\t\t\t\t[98.89011844900006, 23.3679029340001],\n\t\t\t\t[98.89228886000006, 23.386894023000067],\n\t\t\t\t[98.88960168400013, 23.406789449000073],\n\t\t\t\t[98.87554569500003, 23.44642527300003],\n\t\t\t\t[98.86397017400009, 23.46660491900012],\n\t\t\t\t[98.84888065700005, 23.480402527000066],\n\t\t\t\t[98.83007043500004, 23.480014954000055],\n\t\t\t\t[98.80981327300003, 23.474098002000048],\n\t\t\t\t[98.7999947510001, 23.48073842400005],\n\t\t\t\t[98.78087447100006, 23.532854106000016],\n\t\t\t\t[98.78438846900013, 23.54703928700006],\n\t\t\t\t[98.7962740480001, 23.557917175000043],\n\t\t\t\t[98.84329960100007, 23.5840137740001],\n\t\t\t\t[98.85022424400012, 23.590628357000114],\n\t\t\t\t[98.85735559100004, 23.604348450000046],\n\t\t\t\t[98.85601200400009, 23.610007020000083],\n\t\t\t\t[98.84960412600009, 23.614735413000076],\n\t\t\t\t[98.80795292200003, 23.67579111800005],\n\t\t\t\t[98.80030481000006, 23.69271514900005],\n\t\t\t\t[98.79906457500005, 23.743228862000066],\n\t\t\t\t[98.79317346200003, 23.758473409000104],\n\t\t\t\t[98.77787723800009, 23.76929962100006],\n\t\t\t\t[98.73839644400005, 23.77555247000005],\n\t\t\t\t[98.70832076000005, 23.78469919800004],\n\t\t\t\t[98.68496301300013, 23.784802551000084],\n\t\t\t\t[98.67566125500008, 23.787386373000075],\n\t\t\t\t[98.66367232300013, 23.796946513000066],\n\t\t\t\t[98.66356897000003, 23.803070171000044],\n\t\t\t\t[98.66832320200012, 23.808702902000064],\n\t\t\t\t[98.67142378700004, 23.816738587000046],\n\t\t\t\t[98.66418908700007, 23.89037750200005],\n\t\t\t\t[98.66480920400005, 23.9033741250001],\n\t\t\t\t[98.67297408100006, 23.928308004000073],\n\t\t\t\t[98.6745243740001, 23.936886292000096],\n\t\t\t\t[98.6657393800001, 23.953216045000133],\n\t\t\t\t[98.65881473800005, 23.961122539000073],\n\t\t\t\t[98.66325891200012, 23.969545797000066],\n\t\t\t\t[98.67989872200008, 23.976263733000096],\n\t\t\t\t[98.69922570900007, 23.981560568000035],\n\t\t\t\t[98.71679569500009, 23.988407695],\n\t\t\t\t[98.76557824800005, 24.02706166600008],\n\t\t\t\t[98.85621871000006, 24.083802388000024],\n\t\t\t\t[98.87347863800005, 24.11449819000005],\n\t\t\t\t[98.86696740800011, 24.143256124000075],\n\t\t\t\t[98.86572717300004, 24.145684917000025],\n\t\t\t\t[98.85528853400012, 24.13896698000009],\n\t\t\t\t[98.8180815020001, 24.12896759100009],\n\t\t\t\t[98.7161755780001, 24.12134531700012],\n\t\t\t\t[98.68175907400007, 24.106875916],\n\t\t\t\t[98.64041792900014, 24.100752258000014],\n\t\t\t\t[98.61251265500005, 24.087548930000125],\n\t\t\t\t[98.59711307800006, 24.083078919000016],\n\t\t\t\t[98.58522749900004, 24.075715027000015],\n\t\t\t\t[98.57024133400006, 24.08209706600006],\n\t\t\t\t[98.54305953000005, 24.093956807000083],\n\t\t\t\t[98.50326867700005, 24.121267802000077],\n\t\t\t\t[98.47453658000006, 24.127830709000065],\n\t\t\t\t[98.43495243300009, 24.130259501000026],\n\t\t\t\t[98.39557499200009, 24.128063253000036],\n\t\t\t\t[98.37872847500012, 24.122404684000102],\n\t\t\t\t[98.3473092050001, 24.10493804900007],\n\t\t\t\t[98.33066939300005, 24.099486186000078],\n\t\t\t\t[98.2932556560001, 24.10013214100006],\n\t\t\t\t[98.21915165200005, 24.117366231000048],\n\t\t\t\t[98.18153120900013, 24.118658142000086],\n\t\t\t\t[98.10505009000008, 24.101527405000027],\n\t\t\t\t[97.88997277800013, 24.022617493],\n\t\t\t\t[97.87664025900011, 24.014400940000044],\n\t\t\t\t[97.83633264200006, 23.971767883000084],\n\t\t\t\t[97.81783247900012, 23.95815114400007],\n\t\t\t\t[97.8040865480001, 23.954507955000068],\n\t\t\t\t[97.78951379400013, 23.95313853],\n\t\t\t\t[97.76780969300012, 23.946472270000086],\n\t\t\t\t[97.74817264900008, 23.93406992600002],\n\t\t\t\t[97.69680627400004, 23.887121887000077],\n\t\t\t\t[97.67696252500014, 23.878698629000084],\n\t\t\t\t[97.65567183400009, 23.87254913300002],\n\t\t\t\t[97.64734483100005, 23.868524415000067],\n\t\t\t\t[97.63706831900004, 23.86355743500006],\n\t\t\t\t[97.62466597500003, 23.846710918],\n\t\t\t\t[97.61970503700007, 23.865986226000032],\n\t\t\t\t[97.61546757000013, 23.875132955000097],\n\t\t\t\t[97.60988651500003, 23.88314280200008],\n\t\t\t\t[97.5726794840001, 23.907559916000125],\n\t\t\t\t[97.53299198400003, 23.92370880200012],\n\t\t\t\t[97.51645552600013, 23.942829081000113],\n\t\t\t\t[97.70765832500007, 24.12529856400009],\n\t\t\t\t[97.72006066900008, 24.1474419150001],\n\t\t\t\t[97.72305790200005, 24.171264751000066],\n\t\t\t\t[97.71871708200007, 24.181548361000083],\n\t\t\t\t[97.70455774000004, 24.19924753800008],\n\t\t\t\t[97.70156050600013, 24.210926412000063],\n\t\t\t\t[97.70466109300008, 24.221726786000076],\n\t\t\t\t[97.71117232300003, 24.228470561000037],\n\t\t\t\t[97.71851037600004, 24.233974101000015],\n\t\t\t\t[97.72409143100003, 24.241518860000056],\n\t\t\t\t[97.71840702300011, 24.277666524],\n\t\t\t\t[97.64450972500003, 24.302393698000103],\n\t\t\t\t[97.63820520100012, 24.328102722],\n\t\t\t\t[97.65360477700011, 24.338722229000084],\n\t\t\t\t[97.67427535100012, 24.340840963000048],\n\t\t\t\t[97.68957157400007, 24.346473694000068],\n\t\t\t\t[97.68833134000005, 24.36771270800004],\n\t\t\t\t[97.68099328600005, 24.377763774000087],\n\t\t\t\t[97.66259647700014, 24.390062765000025],\n\t\t\t\t[97.65732548000011, 24.402000020000074],\n\t\t\t\t[97.6554651290001, 24.412076925000108],\n\t\t\t\t[97.65226119000005, 24.422722270000108],\n\t\t\t\t[97.6473002520001, 24.432334086000097],\n\t\t\t\t[97.6398588460001, 24.439284567000087],\n\t\t\t\t[97.62435591600007, 24.442281799000014],\n\t\t\t\t[97.60068811000014, 24.44192006400003],\n\t\t\t\t[97.51955611200009, 24.430783794],\n\t\t\t\t[97.51325158700007, 24.438586935],\n\t\t\t\t[97.51387170400005, 24.46168629900008],\n\t\t\t\t[97.53857303900003, 24.597259420000015],\n\t\t\t\t[97.53278527800006, 24.723324077000072],\n\t\t\t\t[97.53609257000005, 24.745028178000084],\n\t\t\t\t[97.5361959230001, 24.745079854],\n\t\t\t\t[97.60399540200012, 24.78644683900002],\n\t\t\t\t[97.6425460210001, 24.816780904000055],\n\t\t\t\t[97.66394006400003, 24.829777527000104],\n\t\t\t\t[97.68595422400011, 24.833524068000102],\n\t\t\t\t[97.72657190000012, 24.826289368000047],\n\t\t\t\t[97.74848270700011, 24.826470235],\n\t\t\t\t[97.76522587100004, 24.834660950000043],\n\t\t\t\t[97.77297733600005, 24.85468556800008],\n\t\t\t\t[97.76098840300006, 24.870291850000015],\n\t\t\t\t[97.72409143100003, 24.897215272000025],\n\t\t\t\t[97.70827844300004, 24.927290955],\n\t\t\t\t[97.70331750500003, 24.960415548000086],\n\t\t\t\t[97.70517785700014, 25.02883514400007],\n\t\t\t\t[97.69959680200009, 25.065008647000113],\n\t\t\t\t[97.7036275640001, 25.073922831000047],\n\t\t\t\t[97.72161096200006, 25.079271342000098],\n\t\t\t\t[97.73752730300009, 25.090510967000043],\n\t\t\t\t[97.7540637620001, 25.11355865500009],\n\t\t\t\t[97.77700809800012, 25.15862050400004],\n\t\t\t\t[97.80098596300013, 25.237633769000112],\n\t\t\t\t[97.82362023900009, 25.26161163300013],\n\t\t\t\t[97.86031050700007, 25.244093323000058],\n\t\t\t\t[97.87178267400009, 25.227660217],\n\t\t\t\t[97.87881066900007, 25.213552551000063],\n\t\t\t\t[97.88893925000013, 25.205646057000124],\n\t\t\t\t[97.90991988100006, 25.20755808500006],\n\t\t\t\t[97.93079716000011, 25.218513489000102],\n\t\t\t\t[97.97627242100009, 25.27225697900012],\n\t\t\t\t[97.99239546700005, 25.28248891200009],\n\t\t\t\t[98.03352990700012, 25.301299134000104],\n\t\t\t\t[98.04489872300013, 25.311944479000104],\n\t\t\t\t[98.06257206300012, 25.35431915300002],\n\t\t\t\t[98.0756978760001, 25.376074932000037],\n\t\t\t\t[98.08996057100006, 25.385945129],\n\t\t\t\t[98.10835738100008, 25.388890686000096],\n\t\t\t\t[98.11207808500006, 25.396228739000023],\n\t\t\t\t[98.11021773300007, 25.410439759000056],\n\t\t\t\t[98.11197473100003, 25.448473613000104],\n\t\t\t\t[98.10887414600012, 25.458240459000066],\n\t\t\t\t[98.10474003100006, 25.466973775000028],\n\t\t\t\t[98.09946903500003, 25.493328756],\n\t\t\t\t[98.09977909300005, 25.50004669200011],\n\t\t\t\t[98.10463667800013, 25.506764628000056],\n\t\t\t\t[98.12303348900014, 25.522215882000054],\n\t\t\t\t[98.13419559800008, 25.534618225000102],\n\t\t\t\t[98.13936324100007, 25.550224508000056],\n\t\t\t\t[98.13843306500013, 25.598955384000092],\n\t\t\t\t[98.1400867110001, 25.611461080000097],\n\t\t\t\t[98.15021529100005, 25.613063050000036],\n\t\t\t\t[98.23238081900007, 25.586553040000027],\n\t\t\t\t[98.24716027900007, 25.579163310000112],\n\t\t\t\t[98.2766158450001, 25.552446594000045],\n\t\t\t\t[98.28943160000006, 25.550379538000087],\n\t\t\t\t[98.31206587700012, 25.55745920800011],\n\t\t\t\t[98.3326330970001, 25.566967672000104],\n\t\t\t\t[98.34710249800003, 25.577819723000047],\n\t\t\t\t[98.35723107900009, 25.592754212],\n\t\t\t\t[98.36984012900012, 25.636782532000055],\n\t\t\t\t[98.37521447800009, 25.649288229000078],\n\t\t\t\t[98.41324833200008, 25.69207631400009],\n\t\t\t\t[98.41634891800004, 25.700189514],\n\t\t\t\t[98.41665897600012, 25.712591859000057],\n\t\t\t\t[98.41872603400009, 25.724219056000024],\n\t\t\t\t[98.42472050000003, 25.730833639000124],\n\t\t\t\t[98.43226525900008, 25.736104635000046],\n\t\t\t\t[98.43929325400006, 25.7435977170001],\n\t\t\t\t[98.45262577300008, 25.777962545000022],\n\t\t\t\t[98.46130741400009, 25.79465403300007],\n\t\t\t\t[98.47453658000006, 25.80576446500008],\n\t\t\t\t[98.49810103400006, 25.830724183000072],\n\t\t\t\t[98.50946984900003, 25.838062236000056],\n\t\t\t\t[98.52683313100005, 25.838785706000053],\n\t\t\t\t[98.53954553200003, 25.833721415000085],\n\t\t\t\t[98.56238651600012, 25.816358135000073],\n\t\t\t\t[98.59091190600009, 25.806384583000053],\n\t\t\t\t[98.60031701600013, 25.801733704000085],\n\t\t\t\t[98.61003218700006, 25.800596822000088],\n\t\t\t\t[98.62605188000003, 25.806487936000067],\n\t\t\t\t[98.6778316650001, 25.843281555000075],\n\t\t\t\t[98.68485966000003, 25.853100078000054],\n\t\t\t\t[98.69023400900005, 25.86555409700013],\n\t\t\t\t[98.69240441900007, 25.87898997100008],\n\t\t\t\t[98.68982059800004, 25.8915990200001],\n\t\t\t\t[98.68465295400006, 25.897593486000048],\n\t\t\t\t[98.67235396300009, 25.90183095400009],\n\t\t\t\t[98.66728967300003, 25.905758362000043],\n\t\t\t\t[98.65809126800013, 25.925033671000094],\n\t\t\t\t[98.62532841000012, 25.969992168000104],\n\t\t\t\t[98.61623335800004, 25.979397278000064],\n\t\t\t\t[98.6042444260001, 25.982497864],\n\t\t\t\t[98.59246219900007, 25.98074086500013],\n\t\t\t\t[98.5824369720001, 25.98229115900004],\n\t\t\t\t[98.57540897700005, 25.99510691300013],\n\t\t\t\t[98.57716597500013, 26.01732778000006],\n\t\t\t\t[98.5726184500001, 26.035569560000013],\n\t\t\t\t[98.5538082280001, 26.071071269000058],\n\t\t\t\t[98.54729699800004, 26.088279521000047],\n\t\t\t\t[98.54553999900003, 26.105642803000066],\n\t\t\t\t[98.55019087800008, 26.12078399700006],\n\t\t\t\t[98.5630066330001, 26.131222636000118],\n\t\t\t\t[98.60217736800013, 26.13995595300007],\n\t\t\t\t[98.61933394400012, 26.145743714000062],\n\t\t\t\t[98.62574182200012, 26.144348450000066],\n\t\t\t\t[98.62429488100014, 26.108485006000038],\n\t\t\t\t[98.63080611200013, 26.096909485000097],\n\t\t\t\t[98.64444869000005, 26.097891337000064],\n\t\t\t\t[98.68082889800013, 26.12496978800003],\n\t\t\t\t[98.68672001200008, 26.133238017000068],\n\t\t\t\t[98.68651330600005, 26.15411529600003],\n\t\t\t\t[98.69240441900007, 26.159954732000116],\n\t\t\t\t[98.70025923700007, 26.16532908200007],\n\t\t\t\t[98.7055302330001, 26.174940898000088],\n\t\t\t\t[98.70149947100003, 26.191167298],\n\t\t\t\t[98.67700484200009, 26.239329733000076],\n\t\t\t\t[98.66821984900008, 26.248218079000097],\n\t\t\t\t[98.64816939300005, 26.244807434000066],\n\t\t\t\t[98.6421749270001, 26.25452260400003],\n\t\t\t\t[98.64455204300003, 26.271575827000035],\n\t\t\t\t[98.64951298000011, 26.290592753000013],\n\t\t\t\t[98.65778120900006, 26.31162506100013],\n\t\t\t\t[98.6976754150001, 26.35405141200006],\n\t\t\t\t[98.70739058400011, 26.371052959000068],\n\t\t\t\t[98.7134884030001, 26.389449768000063],\n\t\t\t\t[98.7172091060001, 26.408725077000028],\n\t\t\t\t[98.72113651600006, 26.538898011000086],\n\t\t\t\t[98.72795780400003, 26.57259104500004],\n\t\t\t\t[98.74852502400012, 26.6059740190001],\n\t\t\t\t[98.7555530190001, 26.625042623000084],\n\t\t\t\t[98.75069543500007, 26.646126607000028],\n\t\t\t\t[98.74707808400012, 26.655738424000035],\n\t\t\t\t[98.74676802600004, 26.664420064000083],\n\t\t\t\t[98.74738814300008, 26.672688293000036],\n\t\t\t\t[98.74645796800013, 26.681059876000106],\n\t\t\t\t[98.73198856700003, 26.71351267500002],\n\t\t\t\t[98.73436568300014, 26.73428660100008],\n\t\t\t\t[98.74924849500007, 26.77144195600006],\n\t\t\t\t[98.75038537600011, 26.792009176000064],\n\t\t\t\t[98.74242720500013, 26.81040598600005],\n\t\t\t\t[98.71813928200004, 26.842497050000063],\n\t\t\t\t[98.71452193200008, 26.862030741000083],\n\t\t\t\t[98.71865604700008, 26.872676087000073],\n\t\t\t\t[98.73312544800012, 26.88792063400011],\n\t\t\t\t[98.73632938600008, 26.89825592100003],\n\t\t\t\t[98.73570927000003, 26.907299296000062],\n\t\t\t\t[98.71266158100008, 26.995149231000042],\n\t\t\t\t[98.72061975100013, 27.013959452000066],\n\t\t\t\t[98.73167850700003, 27.031064352],\n\t\t\t\t[98.73777632600007, 27.048686015],\n\t\t\t\t[98.73136844900006, 27.068788147000063],\n\t\t\t\t[98.71648563700012, 27.082482402000082],\n\t\t\t\t[98.70273970500006, 27.086823222000064],\n\t\t\t\t[98.69137089100008, 27.092404276000067],\n\t\t\t\t[98.68268925000012, 27.110077617000073],\n\t\t\t\t[98.67256066900006, 27.17560333200008],\n\t\t\t\t[98.67359419800005, 27.207901103000054],\n\t\t\t\t[98.68020878100003, 27.237046611000082],\n\t\t\t\t[98.70418664600004, 27.304174296000028],\n\t\t\t\t[98.70770064400011, 27.337247213000083],\n\t\t\t\t[98.69736535700008, 27.368924866],\n\t\t\t\t[98.69106083200006, 27.373162334000043],\n\t\t\t\t[98.6837227790001, 27.37362742200007],\n\t\t\t\t[98.67731490100005, 27.376107890000057],\n\t\t\t\t[98.67442102100006, 27.3865982060001],\n\t\t\t\t[98.66832320200012, 27.475249126000094],\n\t\t\t\t[98.67111372900007, 27.516151022000102],\n\t\t\t\t[98.68175907400007, 27.55648447700007],\n\t\t\t\t[98.67927860500009, 27.57733591800003],\n\t\t\t\t[98.67421431500003, 27.586120911000123],\n\t\t\t\t[98.6657393800001, 27.597076315],\n\t\t\t\t[98.65592085800006, 27.60676564500004],\n\t\t\t\t[98.6472392170001, 27.611726583000078],\n\t\t\t\t[98.63504357900007, 27.611054789],\n\t\t\t\t[98.62584517500005, 27.6055512490001],\n\t\t\t\t[98.61654341700006, 27.59841990200006],\n\t\t\t\t[98.60455448400006, 27.59273549400011],\n\t\t\t\t[98.5784062090001, 27.59172780400003],\n\t\t\t\t[98.56435022000005, 27.603535869000055],\n\t\t\t\t[98.54336958800008, 27.642525737000042],\n\t\t\t\t[98.5221822520001, 27.656297506000087],\n\t\t\t\t[98.4923132730001, 27.643430074],\n\t\t\t\t[98.47453658000006, 27.65717600500004],\n\t\t\t\t[98.42224003100006, 27.680895487000058],\n\t\t\t\t[98.4102510990001, 27.68425445600009],\n\t\t\t\t[98.40001916500012, 27.675727844000065],\n\t\t\t\t[98.3974353430001, 27.656814270000027],\n\t\t\t\t[98.39815881400011, 27.619813945000075],\n\t\t\t\t[98.39288781700009, 27.587154440000106],\n\t\t\t\t[98.38327600100007, 27.55578684500007],\n\t\t\t\t[98.36394901500012, 27.532170716000067],\n\t\t\t\t[98.32860233600007, 27.52286895700003],\n\t\t\t\t[98.29470259600009, 27.536614889000063],\n\t\t\t\t[98.27568566900004, 27.570101217000072],\n\t\t\t\t[98.25439497900004, 27.648132629000074],\n\t\t\t\t[98.23806522600012, 27.680223694000077],\n\t\t\t\t[98.20437219300004, 27.727300924000062],\n\t\t\t\t[98.20178837100013, 27.736551005000095],\n\t\t\t\t[98.21150354000008, 27.760322164000044],\n\t\t\t\t[98.20840295400006, 27.766161601000036],\n\t\t\t\t[98.20209842900005, 27.7712517290001],\n\t\t\t\t[98.1978609620001, 27.780631002000078],\n\t\t\t\t[98.19848107900003, 27.800448914000057],\n\t\t\t\t[98.20065148900005, 27.813600565000016],\n\t\t\t\t[98.19662072800003, 27.823186544000023],\n\t\t\t\t[98.16241092900003, 27.842849427000075],\n\t\t\t\t[98.14577111900013, 27.860729472000045],\n\t\t\t\t[98.1400867110001, 27.878557841000074],\n\t\t\t\t[98.1567265220001, 27.889203187000064],\n\t\t\t\t[98.17667362500003, 27.898117371000083],\n\t\t\t\t[98.17729374200007, 27.91292266900011],\n\t\t\t\t[98.16582157400006, 27.92969167100007],\n\t\t\t\t[98.14897505700009, 27.944548645000012],\n\t\t\t\t[98.11352502500006, 27.96170522100006],\n\t\t\t\t[98.10711714700011, 27.973074036000057],\n\t\t\t\t[98.11848596200014, 27.99472646100004],\n\t\t\t\t[98.12251672400004, 28.015448710000058],\n\t\t\t\t[98.1279944260001, 28.105469056000018],\n\t\t\t\t[98.12696089700012, 28.124279277000042],\n\t\t\t\t[98.11869266800005, 28.140789897000033],\n\t\t\t\t[98.1150022760001, 28.14388835700008],\n\t\t\t\t[98.04861942600013, 28.199623515000027],\n\t\t\t\t[98.03135949800003, 28.208330994000065],\n\t\t\t\t[97.9910518800001, 28.214015401000026],\n\t\t\t\t[97.98485070800012, 28.2242214970001],\n\t\t\t\t[97.99384240800003, 28.25254018200009],\n\t\t\t\t[97.9929122320001, 28.26892161100004],\n\t\t\t\t[97.97875288900013, 28.280600484],\n\t\t\t\t[97.9447497970001, 28.29884226500006],\n\t\t\t\t[97.8975175380001, 28.35532460500012],\n\t\t\t\t[97.85907027200005, 28.370129903000034],\n\t\t\t\t[97.79726525900003, 28.34392995200001],\n\t\t\t\t[97.76532922400008, 28.352430725000133],\n\t\t\t\t[97.74000777200007, 28.38260976200003],\n\t\t\t\t[97.69959680200009, 28.48802968300008],\n\t\t\t\t[97.67045129400009, 28.511284079000077],\n\t\t\t\t[97.6410990810001, 28.498364970000083],\n\t\t\t\t[97.61360721800003, 28.481983541000133],\n\t\t\t\t[97.58993941300008, 28.49469594300008],\n\t\t\t\t[97.56751184100011, 28.525495097000046],\n\t\t\t\t[97.54622115100011, 28.53846588100008],\n\t\t\t\t[97.52772098800011, 28.52952585900006],\n\t\t\t\t[97.51397505800009, 28.49469594300008],\n\t\t\t\t[97.50301965300008, 28.47772023600008],\n\t\t\t\t[97.48813684100003, 28.44193430600005],\n\t\t\t\t[97.47459761600004, 28.426198832000082],\n\t\t\t\t[97.47149703000014, 28.414959209000116],\n\t\t\t\t[97.46570927000005, 28.40669097900006],\n\t\t\t\t[97.45010298700004, 28.39191152000005],\n\t\t\t\t[97.44534875500011, 28.382971497000128],\n\t\t\t\t[97.4467956950001, 28.374005636000092],\n\t\t\t\t[97.45020634000014, 28.364858907],\n\t\t\t\t[97.45237674900005, 28.355479635000066],\n\t\t\t\t[97.45237674900005, 28.317678324000084],\n\t\t\t\t[97.44782922400009, 28.29760203100004],\n\t\t\t\t[97.43666711400004, 28.286414083000082],\n\t\t\t\t[97.41672001200004, 28.286052348000098],\n\t\t\t\t[97.3982198490001, 28.28889455200006],\n\t\t\t\t[97.38437056500004, 28.284837952000075],\n\t\t\t\t[97.3778593350001, 28.26359893900009],\n\t\t\t\t[97.36959110600003, 28.25347035700004],\n\t\t\t\t[97.33383101400011, 28.235254415],\n\t\t\t\t[97.32349572800013, 28.217477723000073],\n\t\t\t\t[97.2852551680001, 28.235667827],\n\t\t\t\t[97.22965132700011, 28.274606018000085],\n\t\t\t\t[97.22076298000007, 28.28339101200008],\n\t\t\t\t[97.21053104700013, 28.308092346000066],\n\t\t\t\t[97.20277958200012, 28.31155466700004],\n\t\t\t\t[97.19327111900003, 28.311399638000083],\n\t\t\t\t[97.18272912600008, 28.31499115000007],\n\t\t\t\t[97.11554976400004, 28.366564230000066],\n\t\t\t\t[97.07844608600004, 28.3751425170001],\n\t\t\t\t[97.03297082600005, 28.357029928000074],\n\t\t\t\t[96.9974174400001, 28.337082825000053],\n\t\t\t\t[96.96579146400012, 28.330468242000066],\n\t\t\t\t[96.93395878200005, 28.336617737000026],\n\t\t\t\t[96.89788863200005, 28.354704489000042],\n\t\t\t\t[96.71692392905247, 28.436539447625634],\n\t\t\t\t[96.60442611830537, 28.444534241434948],\n\t\t\t\t[96.5615177204665, 28.44729288316006],\n\t\t\t\t[96.51238244700005, 28.428808492000073],\n\t\t\t\t[96.49522587100006, 28.42147043900009],\n\t\t\t\t[96.44112658162652, 28.39541577691665],\n\t\t\t\t[96.36964414401973, 28.378115826943503],\n\t\t\t\t[96.30185249373439, 28.420710938634112],\n\t\t\t\t[96.33645875408492, 28.47966681390912],\n\t\t\t\t[96.40901887262294, 28.558928647938785],\n\t\t\t\t[96.50237514126326, 28.644476217418358],\n\t\t\t\t[96.50104350465409, 28.687631303142155],\n\t\t\t\t[96.59800971353144, 28.709910398443995],\n\t\t\t\t[96.59258426900004, 28.757884013000094],\n\t\t\t\t[96.57666792800006, 28.808526917000066],\n\t\t\t\t[96.52375126100003, 28.864414979000045],\n\t\t\t\t[96.51083215400013, 28.885524801000074],\n\t\t\t\t[96.50039351400005, 28.929243062000054],\n\t\t\t\t[96.49222863800003, 28.94800160700005],\n\t\t\t\t[96.47465865100008, 28.962057597000054],\n\t\t\t\t[96.46008589700011, 28.963349507000103],\n\t\t\t\t[96.45212772700006, 28.970377502000034],\n\t\t\t\t[96.45119755100012, 28.98138458300012],\n\t\t\t\t[96.45760542900013, 28.99458791100001],\n\t\t\t\t[96.36656829155606, 29.036536563468914],\n\t\t\t\t[96.29465549772947, 28.99232448388489],\n\t\t\t\t[96.24858762565306, 28.945343306324006],\n\t\t\t\t[96.19532275757172, 28.941105845485463],\n\t\t\t\t[96.17595371463305, 29.017353609711428],\n\t\t\t\t[96.17462528500005, 29.108844503000043],\n\t\t\t\t[96.1835136310001, 29.123778992000027],\n\t\t\t\t[96.19364221300003, 29.13693064400009],\n\t\t\t\t[96.21007531700008, 29.145767314000082],\n\t\t\t\t[96.31642541500008, 29.171863912000063],\n\t\t\t\t[96.32748417200008, 29.180442200000087],\n\t\t\t\t[96.34236698400014, 29.21064707500001],\n\t\t\t\t[96.36686161300008, 29.24421091700013],\n\t\t\t\t[96.36624149600004, 29.257233379000056],\n\t\t\t\t[96.34991174300006, 29.274234924],\n\t\t\t\t[96.33709598900009, 29.27971262700008],\n\t\t\t\t[96.32324670400004, 29.275010071000096],\n\t\t\t\t[96.30412642400006, 29.261212464000053],\n\t\t\t\t[96.26784956900008, 29.24173044900006],\n\t\t\t\t[96.23529341600005, 29.241213684000016],\n\t\t\t\t[96.20542443800014, 29.256949158000097],\n\t\t\t\t[96.17627893100013, 29.28645640100011],\n\t\t\t\t[96.16604699800013, 29.303173726000054],\n\t\t\t\t[96.15095747900011, 29.35407501200008],\n\t\t\t\t[96.14196578000008, 29.368466899000097],\n\t\t\t\t[96.07453626532634, 29.369285607240855],\n\t\t\t\t[96.01413548284108, 29.364252208700393],\n\t\t\t\t[95.95373470035588, 29.35921881015993],\n\t\t\t\t[95.86313352662813, 29.32398502037684],\n\t\t\t\t[95.79594038900007, 29.352886455000046],\n\t\t\t\t[95.77640669800007, 29.345548401000073],\n\t\t\t\t[95.74478072100004, 29.340432435000068],\n\t\t\t\t[95.7473653601981, 29.27365103497256],\n\t\t\t\t[95.71716496895556, 29.218283651027733],\n\t\t\t\t[95.64669738938943, 29.22835044810863],\n\t\t\t\t[95.59233524600006, 29.249688619000025],\n\t\t\t\t[95.58168990100006, 29.24746653300012],\n\t\t\t\t[95.57290490800006, 29.247259827000065],\n\t\t\t\t[95.56442997300007, 29.2456061810001],\n\t\t\t\t[95.55378462800007, 29.239043275000128],\n\t\t\t\t[95.55068404100012, 29.230284119000046],\n\t\t\t\t[95.55202762800008, 29.220129700000072],\n\t\t\t\t[95.55016727700007, 29.212481588000017],\n\t\t\t\t[95.51533736200014, 29.209432679000074],\n\t\t\t\t[95.51192671700011, 29.19754709900006],\n\t\t\t\t[95.52267541500004, 29.161192729000064],\n\t\t\t\t[95.52143518100007, 29.13786082000003],\n\t\t\t\t[95.51130660000013, 29.131788839000095],\n\t\t\t\t[95.48757683710141, 29.068994487006023],\n\t\t\t\t[95.42982403198397, 29.046524645630395],\n\t\t\t\t[95.36740605062847, 29.03649616327051],\n\t\t\t\t[95.2815531820001, 29.052672221000094],\n\t\t\t\t[95.22491581200012, 29.05936431900001],\n\t\t\t\t[95.21633752500009, 29.06499705000003],\n\t\t\t\t[95.21406376100009, 29.07308441200003],\n\t\t\t\t[95.21282352700013, 29.08186940500012],\n\t\t\t\t[95.2078625900001, 29.089595032000105],\n\t\t\t\t[95.19969771300003, 29.094245911000073],\n\t\t\t\t[95.19153283800006, 29.096829733000092],\n\t\t\t\t[95.11691206900008, 29.108095195000047],\n\t\t\t\t[95.09903202400011, 29.113779603000083],\n\t\t\t\t[95.04766564900007, 29.140806377000033],\n\t\t\t\t[94.98906457600003, 29.15398386700012],\n\t\t\t\t[94.89129276600005, 29.160495097000094],\n\t\t\t\t[94.85408573500007, 29.17000356000007],\n\t\t\t\t[94.81543176300005, 29.16886667900006],\n\t\t\t\t[94.79879195200004, 29.1664378870001],\n\t\t\t\t[94.77657108500011, 29.16669626900007],\n\t\t\t\t[94.76148156800008, 29.174706116000053],\n\t\t\t\t[94.76768273900007, 29.21385101300008],\n\t\t\t\t[94.75641727800013, 29.230516663000017],\n\t\t\t\t[94.70422408000013, 29.284699402000044],\n\t\t\t\t[94.66846399000013, 29.306610209000084],\n\t\t\t\t[94.6304301350001, 29.319451803000064],\n\t\t\t\t[94.59994104000009, 29.316635437000016],\n\t\t\t\t[94.5826811120001, 29.302915345000073],\n\t\t\t\t[94.52862756400003, 29.2312401330001],\n\t\t\t\t[94.51477828000009, 29.22105987600004],\n\t\t\t\t[94.49824182200007, 29.21522043900005],\n\t\t\t\t[94.47498742700003, 29.210802104000052],\n\t\t\t\t[94.42238081900007, 29.210492045000066],\n\t\t\t\t[94.39643925000013, 29.207081400000035],\n\t\t\t\t[94.37287479700012, 29.19630686500001],\n\t\t\t\t[94.36253951000009, 29.185325623000026],\n\t\t\t\t[94.34631311100009, 29.1590739950001],\n\t\t\t\t[94.33577111900013, 29.149617208000038],\n\t\t\t\t[94.32378218600007, 29.146025696000052],\n\t\t\t\t[94.28750533100003, 29.147937724000073],\n\t\t\t\t[94.27078578096348, 29.097929973215642],\n\t\t\t\t[94.30904814105469, 29.059667613124404],\n\t\t\t\t[94.34731050114596, 29.024348511501685],\n\t\t\t\t[94.29138859024334, 28.977256376004746],\n\t\t\t\t[94.2501829716835, 28.933107498976327],\n\t\t\t\t[94.17365825150097, 28.930164240507835],\n\t\t\t\t[94.1353958914097, 28.897788397353693],\n\t\t\t\t[94.07947398050715, 28.883072105010925],\n\t\t\t\t[94.02684940600011, 28.864182435000075],\n\t\t\t\t[94.01144982900013, 28.85302032500003],\n\t\t\t\t[93.99201949100012, 28.844648743000064],\n\t\t\t\t[93.99313607399837, 28.80188742309345],\n\t\t\t\t[93.9815905577272, 28.768130860141966],\n\t\t\t\t[93.96109345404737, 28.72994349590268],\n\t\t\t\t[93.92778566056765, 28.68275160171495],\n\t\t\t\t[93.86307969177443, 28.704870831024095],\n\t\t\t\t[93.78174379684887, 28.68050383781251],\n\t\t\t\t[93.72247522000009, 28.696647441000053],\n\t\t\t\t[93.70552535000007, 28.69189320900007],\n\t\t\t\t[93.66490848182954, 28.690238755807428],\n\t\t\t\t[93.64341027900008, 28.680240174000105],\n\t\t\t\t[93.62553023300006, 28.67235951800005],\n\t\t\t\t[93.60713342300005, 28.672204488000105],\n\t\t\t\t[93.55173628800009, 28.67894826200005],\n\t\t\t\t[93.44621301300003, 28.671894430000023],\n\t\t\t\t[93.35543239724171, 28.624065359777703],\n\t\t\t\t[93.31717003715039, 28.603462550497838],\n\t\t\t\t[93.30284340070244, 28.556921073348917],\n\t\t\t\t[93.2869721652333, 28.520517242676647],\n\t\t\t\t[93.25906765301328, 28.496023260000364],\n\t\t\t\t[93.21883846222534, 28.457435846387227],\n\t\t\t\t[93.1862858334245, 28.431995228097378],\n\t\t\t\t[93.21807344565363, 28.39464655767386],\n\t\t\t\t[93.20782489381371, 28.340539283245555],\n\t\t\t\t[93.12982812476821, 28.325961566073488],\n\t\t\t\t[93.04639880818196, 28.302097099545048],\n\t\t\t\t[92.97492395000006, 28.28230580700007],\n\t\t\t\t[92.96035119600003, 28.270213521000088],\n\t\t\t\t[92.92200728300008, 28.25863800100005],\n\t\t\t\t[92.90381717900004, 28.2496979780001],\n\t\t\t\t[92.88955448400009, 28.23582285600004],\n\t\t\t\t[92.8653699140001, 28.20520457000002],\n\t\t\t\t[92.85028039600013, 28.19194956500003],\n\t\t\t\t[92.8347774660001, 28.183526306000132],\n\t\t\t\t[92.81989465400005, 28.17926300100008],\n\t\t\t\t[92.80532190000008, 28.17802276700003],\n\t\t\t\t[92.79023238100007, 28.178901266000068],\n\t\t\t\t[92.78537479700009, 28.183293762000076],\n\t\t\t\t[92.78289432800011, 28.190941874000046],\n\t\t\t\t[92.77917362500011, 28.195902812],\n\t\t\t\t[92.7700785720001, 28.192182108000097],\n\t\t\t\t[92.70786014900011, 28.155414328000106],\n\t\t\t\t[92.67861128800007, 28.133064270000105],\n\t\t\t\t[92.65484012900009, 28.105830790000127],\n\t\t\t\t[92.63727014200003, 28.071982728000123],\n\t\t\t\t[92.63892378800006, 28.057487488000092],\n\t\t\t\t[92.65422001100012, 28.052087301000128],\n\t\t\t\t[92.68925663200014, 28.048314921],\n\t\t\t\t[92.70134891800006, 28.037824606000058],\n\t\t\t\t[92.70134891800006, 28.025241394000133],\n\t\t\t\t[92.73639150917766, 27.98590893651867],\n\t\t\t\t[92.71077012957788, 27.949702392409918],\n\t\t\t\t[92.68367428669768, 27.910450219011963],\n\t\t\t\t[92.63646812873851, 27.89536981004999],\n\t\t\t\t[92.59291178341888, 27.868193283595886],\n\t\t\t\t[92.57497681769904, 27.847806414432647],\n\t\t\t\t[92.51815087726021, 27.839468002981643],\n\t\t\t\t[92.47510949800005, 27.846595968000074],\n\t\t\t\t[92.43903934800005, 27.823289897000066],\n\t\t\t\t[92.42756717900005, 27.82117116400009],\n\t\t\t\t[92.41733524600005, 27.828948466],\n\t\t\t\t[92.40441613800004, 27.85383066900006],\n\t\t\t\t[92.39284061800004, 27.85602691700005],\n\t\t\t\t[92.38105839100012, 27.842461853000074],\n\t\t\t\t[92.37558068800013, 27.821119487000075],\n\t\t\t\t[92.36793257700003, 27.80383372000007],\n\t\t\t\t[92.35005253100007, 27.802541809000033],\n\t\t\t\t[92.33982059800013, 27.815564270000053],\n\t\t\t\t[92.33465295400003, 27.83127390600002],\n\t\t\t\t[92.32917525300013, 27.832927552000072],\n\t\t\t\t[92.31728967300006, 27.80367869100003],\n\t\t\t\t[92.30385380100006, 27.786160380000055],\n\t\t\t\t[92.28876428200005, 27.793085022000056],\n\t\t\t\t[92.27522505700006, 27.81168853700011],\n\t\t\t\t[92.25827518700004, 27.848197937000023],\n\t\t\t\t[92.24918013500007, 27.862641500000038],\n\t\t\t\t[92.23956831900006, 27.865276998000056],\n\t\t\t\t[92.1262935790001, 27.81272206600009],\n\t\t\t\t[92.10615954418942, 27.786080717238843],\n\t\t\t\t[92.06487820550117, 27.76172129397611],\n\t\t\t\t[91.98889765320416, 27.76939841380579],\n\t\t\t\t[91.96800093766346, 27.746278233869482],\n\t\t\t\t[91.95224735500011, 27.724820455],\n\t\t\t\t[91.90873579900006, 27.731900126000127],\n\t\t\t\t[91.86491418500009, 27.72998809800002],\n\t\t\t\t[91.85637335954294, 27.764539482011514],\n\t\t\t\t[91.82658872441321, 27.807627271770244],\n\t\t\t\t[91.72987134422583, 27.804136158001306],\n\t\t\t\t[91.68013149075769, 27.849823277598603],\n\t\t\t\t[91.6283394780001, 27.852693787000035],\n\t\t\t\t[91.6371244710001, 27.87724009300011],\n\t\t\t\t[91.64890669800008, 27.897213033000057],\n\t\t\t\t[91.65283410700005, 27.91674672500004],\n\t\t\t\t[91.63795129500011, 27.93974273700009],\n\t\t\t\t[91.62172489400012, 27.950723979000074],\n\t\t\t\t[91.6006409100001, 27.959276429000013],\n\t\t\t\t[91.57862675000007, 27.96470245400009],\n\t\t\t\t[91.53749231000012, 27.969353333000058],\n\t\t\t\t[91.49749475100003, 27.98408111600004],\n\t\t\t\t[91.4609078370001, 27.98436533600004],\n\t\t\t\t[91.44643843600005, 27.986354879000075],\n\t\t\t\t[91.43648287100012, 27.989375107000015],\n\t\t\t\t[91.41884322100009, 27.99472646100004],\n\t\t\t\t[91.34143192600004, 28.03056406700007],\n\t\t\t\t[91.3095992430001, 28.056402283000082],\n\t\t\t\t[91.29016890500003, 28.0914130660001],\n\t\t\t\t[91.26970503800004, 28.072861227000075],\n\t\t\t\t[91.24614058500003, 28.071465963],\n\t\t\t\t[91.2206124270001, 28.07487660700012],\n\t\t\t\t[91.19467085800005, 28.07058746400004],\n\t\t\t\t[91.17586063600004, 28.057487488000092],\n\t\t\t\t[91.13379602000003, 28.01410512300002],\n\t\t\t\t[91.11963667900005, 27.994881490000083],\n\t\t\t\t[91.11942997200003, 27.99472646100004],\n\t\t\t\t[91.09255822800003, 27.97167877200006],\n\t\t\t\t[91.05194055200008, 27.96279042600007],\n\t\t\t\t[91.00884240800008, 27.966769512000056],\n\t\t\t\t[90.97514937400013, 27.982091573],\n\t\t\t\t[90.96057662000004, 27.99472646100004],\n\t\t\t\t[90.90952030400007, 28.032656963000036],\n\t\t\t\t[90.85091923100009, 28.044025777000044],\n\t\t\t\t[90.78870080600007, 28.047488098000073],\n\t\t\t\t[90.75527753600005, 28.055173215000096],\n\t\t\t\t[90.7268957930001, 28.06169911800005],\n\t\t\t\t[90.6839010010001, 28.087072245000044],\n\t\t\t\t[90.66746789600012, 28.090327860000016],\n\t\t\t\t[90.65103479000004, 28.086994731000104],\n\t\t\t\t[90.62188928300003, 28.0729645790001],\n\t\t\t\t[90.59739465400008, 28.07058746400004],\n\t\t\t\t[90.57527714000008, 28.06583323200006],\n\t\t\t\t[90.51006148300007, 28.074101461000012],\n\t\t\t\t[90.49259484900011, 28.074411519000094],\n\t\t\t\t[90.4752315670001, 28.07234446300002],\n\t\t\t\t[90.48566935150171, 28.12465735277827],\n\t\t\t\t[90.51529856561535, 28.154286566892026],\n\t\t\t\t[90.54821991463052, 28.157578701793526],\n\t\t\t\t[90.56797272403975, 28.19050005080878],\n\t\t\t\t[90.59760193815339, 28.200376455513336],\n\t\t\t\t[90.58772553344886, 28.233297804528476],\n\t\t\t\t[90.54821991463052, 28.246466344134532],\n\t\t\t\t[90.50542216091083, 28.249758479036117],\n\t\t\t\t[90.45604013738802, 28.282679828051258],\n\t\t\t\t[90.41653451856979, 28.282679828051258],\n\t\t\t\t[90.38690530445604, 28.2991405025589],\n\t\t\t\t[90.35398395544087, 28.2991405025589],\n\t\t\t\t[90.32950402800009, 28.25579579700006],\n\t\t\t\t[90.29147017500009, 28.261351014000084],\n\t\t\t\t[90.2618041781983, 28.2991405025589],\n\t\t\t\t[90.2618041781983, 28.335353986475624],\n\t\t\t\t[90.22559069428155, 28.358398930786237],\n\t\t\t\t[90.1992536150695, 28.34852252608168],\n\t\t\t\t[90.1762086707588, 28.325477581771068],\n\t\t\t\t[90.15316372644816, 28.322185446869483],\n\t\t\t\t[90.12353451233452, 28.335353986475624],\n\t\t\t\t[90.07086035391018, 28.34523039118018],\n\t\t\t\t[89.99045495700005, 28.32062388100009],\n\t\t\t\t[89.97159305900004, 28.318040060000087],\n\t\t\t\t[89.95252445500006, 28.30824737600004],\n\t\t\t\t[89.91613001353875, 28.31560117706651],\n\t\t\t\t[89.88131433100011, 28.29752451600011],\n\t\t\t\t[89.87361454300003, 28.300599263000052],\n\t\t\t\t[89.86291752100004, 28.295793356000033],\n\t\t\t\t[89.85402917500011, 28.28726674400012],\n\t\t\t\t[89.83862959800013, 28.267913921000073],\n\t\t\t\t[89.82974125100003, 28.259154765000076],\n\t\t\t\t[89.79604821800007, 28.240189515000054],\n\t\t\t\t[89.78085534700011, 28.228769023000027],\n\t\t\t\t[89.77362064600004, 28.21277516700009],\n\t\t\t\t[89.75584395400011, 28.184378967000058],\n\t\t\t\t[89.71781010000007, 28.169082744000022],\n\t\t\t\t[89.59781742400008, 28.149807434000067],\n\t\t\t\t[89.57942061400007, 28.144639791000074],\n\t\t\t\t[89.56148889100012, 28.134640401000055],\n\t\t\t\t[89.51503177900008, 28.081904602000023],\n\t\t\t\t[89.49534305900005, 28.06800364200005],\n\t\t\t\t[89.47534428000012, 28.061337382000133],\n\t\t\t\t[89.45880782100011, 28.04779815700006],\n\t\t\t\t[89.44454512600004, 28.031184184000054],\n\t\t\t\t[89.42118737800007, 27.99472646100004],\n\t\t\t\t[89.42098067200004, 27.99472646100004],\n\t\t\t\t[89.41736367800007, 27.988654027000038],\n\t\t\t\t[89.37013106300003, 27.90935699500004],\n\t\t\t\t[89.33602461800007, 27.8690752160001],\n\t\t\t\t[89.29948938000013, 27.844244690000053],\n\t\t\t\t[89.25871667500007, 27.827553203000022],\n\t\t\t\t[89.22492028800008, 27.807812806000058],\n\t\t\t\t[89.21659020133723, 27.77114152368786],\n\t\t\t\t[89.19820315021519, 27.730581852095057],\n\t\t\t\t[89.15602109175876, 27.665686377546805],\n\t\t\t\t[89.1273589238333, 27.627289888438966],\n\t\t\t\t[89.12465494572706, 27.614851589150547],\n\t\t\t\t[89.11948401016275, 27.61820054938572],\n\t\t\t\t[89.10956515172722, 27.62225826420017],\n\t\t\t\t[89.1058645948479, 27.62295211861509],\n\t\t\t\t[89.10235143650146, 27.623610835805025],\n\t\t\t\t[89.09153086366274, 27.62586512181302],\n\t\t\t\t[89.06402857436444, 27.615946263377637],\n\t\t\t\t[89.05095371551772, 27.60828169095022],\n\t\t\t\t[89.0396822854774, 27.594305117700188],\n\t\t\t\t[89.03337028465484, 27.57897597284547],\n\t\t\t\t[89.01623771099366, 27.57581997243416],\n\t\t\t\t[89.00271199494523, 27.560490827579358],\n\t\t\t\t[89.00496628095334, 27.549670254740633],\n\t\t\t\t[88.99279313650976, 27.53749711029714],\n\t\t\t\t[88.97836570605818, 27.53028339507135],\n\t\t\t\t[88.97295541963888, 27.517659393426257],\n\t\t\t\t[88.97520970564693, 27.506838820587532],\n\t\t\t\t[88.98004625332288, 27.497980380569217],\n\t\t\t\t[88.98296649296316, 27.49263177875116],\n\t\t\t\t[88.96620182870481, 27.478030296977792],\n\t\t\t\t[88.95754909876507, 27.456939267749547],\n\t\t\t\t[88.95105955131027, 27.433144260415148],\n\t\t\t\t[88.96401118394226, 27.392923642327176],\n\t\t\t\t[88.98117510746783, 27.35463488984705],\n\t\t\t\t[88.99701872918376, 27.33086945727318],\n\t\t\t\t[88.97193299480028, 27.312385231937938],\n\t\t\t\t[88.95080816584573, 27.32822885365387],\n\t\t\t\t[88.91516001698494, 27.33086945727318],\n\t\t\t\t[88.89233077000011, 27.315543111000082],\n\t\t\t\t[88.86463220200005, 27.332389628000087],\n\t\t\t\t[88.85202315300006, 27.342363180000078],\n\t\t\t\t[88.8308358160001, 27.36732289600006],\n\t\t\t\t[88.8198287350001, 27.37362742200007],\n\t\t\t\t[88.80820153800005, 27.378381653000062],\n\t\t\t\t[88.79538578300009, 27.385926412000018],\n\t\t\t\t[88.77357832900003, 27.408509013000057],\n\t\t\t\t[88.75978072200007, 27.435070699000065],\n\t\t\t\t[88.75435469600012, 27.464216207000092],\n\t\t\t\t[88.75719689900006, 27.49496368400004],\n\t\t\t\t[88.75755863400008, 27.511448466000033],\n\t\t\t\t[88.74164229300004, 27.531679789000023],\n\t\t\t\t[88.7410221770001, 27.545709941000027],\n\t\t\t\t[88.74815352400003, 27.560127666000042],\n\t\t\t\t[88.76737715600007, 27.586198425000035],\n\t\t\t\t[88.78308679200012, 27.622036031000064],\n\t\t\t\t[88.80566939300007, 27.655108948000063],\n\t\t\t\t[88.85388350400007, 27.843676249000097],\n\t\t\t\t[88.85507206300008, 27.859179179000094],\n\t\t\t\t[88.85155806500012, 27.877162577],\n\t\t\t\t[88.84277307100012, 27.892407125000133],\n\t\t\t\t[88.81889856000004, 27.91519643200003],\n\t\t\t\t[88.81068200700014, 27.927857158000066],\n\t\t\t\t[88.80975183200007, 27.9444969690001],\n\t\t\t\t[88.81967370600006, 27.977337342000013],\n\t\t\t\t[88.81771000200013, 27.99472646100004],\n\t\t\t\t[88.81771000200013, 27.994881490000083],\n\t\t\t\t[88.8175032960001, 27.994881490000083],\n\t\t\t\t[88.80293054200013, 28.011004537000062],\n\t\t\t\t[88.78014123500003, 28.028341980000064],\n\t\t\t\t[88.73564782700004, 28.055265402000074],\n\t\t\t\t[88.7101196700001, 28.061983337000115],\n\t\t\t\t[88.65203536000013, 28.069398906000018],\n\t\t\t\t[88.63167484600007, 28.083351542000017],\n\t\t\t\t[88.61048750800012, 28.105830790000127],\n\t\t\t\t[88.59400272600004, 28.106605937000026],\n\t\t\t\t[88.55281660900005, 28.078054708000067],\n\t\t\t\t[88.53080245000007, 28.0590119430001],\n\t\t\t\t[88.5171598720001, 28.039581604000105],\n\t\t\t\t[88.50207035300008, 28.02888458300002],\n\t\t\t\t[88.47540531400011, 28.036248474000033],\n\t\t\t\t[88.45576827000008, 28.03152008100004],\n\t\t\t\t[88.39990604700012, 27.994881490000083],\n\t\t\t\t[88.39985437100012, 27.99472646100004],\n\t\t\t\t[88.39975101800007, 27.99472646100004],\n\t\t\t\t[88.37877038600004, 27.982634176000047],\n\t\t\t\t[88.19785119700003, 27.95829457600003],\n\t\t\t\t[88.17485518400008, 27.94976796500002],\n\t\t\t\t[88.16296960500006, 27.946899923000032],\n\t\t\t\t[88.15118737800003, 27.947209982000018],\n\t\t\t\t[88.12669274900009, 27.950439759000105],\n\t\t\t\t[88.11573734600012, 27.947261658000045],\n\t\t\t\t[88.09992435700008, 27.928322246000093],\n\t\t\t\t[88.09749556500003, 27.904008484000073],\n\t\t\t\t[88.10488529500003, 27.8797205610001],\n\t\t\t\t[88.11821781400005, 27.860884501000058],\n\t\t\t\t[88.09573856600008, 27.86532867500007],\n\t\t\t\t[88.05279545100012, 27.88651601100004],\n\t\t\t\t[88.02995446800008, 27.893337301000074],\n\t\t\t\t[88.01812056500006, 27.892148743000078],\n\t\t\t\t[87.99181726100005, 27.882640280000075],\n\t\t\t\t[87.9784330650001, 27.880521545000093],\n\t\t\t\t[87.96639245600011, 27.8827436320001],\n\t\t\t\t[87.9452051190001, 27.892303772],\n\t\t\t\t[87.93455977400009, 27.895301006000025],\n\t\t\t\t[87.85611495000006, 27.898608297000024],\n\t\t\t\t[87.83668461200006, 27.908323467000073],\n\t\t\t\t[87.82588423700014, 27.906566467000076],\n\t\t\t\t[87.81415368700004, 27.890960185000054],\n\t\t\t\t[87.79865075700013, 27.863468323000077],\n\t\t\t\t[87.77984053500012, 27.839438782000045],\n\t\t\t\t[87.75637943500004, 27.82037017900005],\n\t\t\t\t[87.72682051600003, 27.807761129000042],\n\t\t\t\t[87.70046553600008, 27.80564239500005],\n\t\t\t\t[87.67852882500011, 27.813351022000077],\n\t\t\t\t[87.65995121300006, 27.819879252000035],\n\t\t\t\t[87.63607670100009, 27.82365163200005],\n\t\t\t\t[87.62109053600011, 27.81954335600004],\n\t\t\t\t[87.58998132300013, 27.804608867000084],\n\t\t\t\t[87.57334151200013, 27.805022278000095],\n\t\t\t\t[87.56507328300006, 27.810861715000087],\n\t\t\t\t[87.55980228700014, 27.819078268000013],\n\t\t\t\t[87.5559782310001, 27.827088115],\n\t\t\t\t[87.55132735200004, 27.83189402300009],\n\t\t\t\t[87.53158695500008, 27.836803284000027],\n\t\t\t\t[87.51453373200013, 27.835201314000088],\n\t\t\t\t[87.47556970200009, 27.82670054200007],\n\t\t\t\t[87.38678959100014, 27.804402161000027],\n\t\t\t\t[87.36911625200014, 27.803937073],\n\t\t\t\t[87.36911625200014, 27.819078268000013],\n\t\t\t\t[87.38069177200009, 27.83582143200006],\n\t\t\t\t[87.38534265100003, 27.849412334000064],\n\t\t\t\t[87.36384525500011, 27.855251770000038],\n\t\t\t\t[87.33583662900008, 27.846363424000018],\n\t\t\t\t[87.31392582200004, 27.8285867310001],\n\t\t\t\t[87.29051639800008, 27.816081035000096],\n\t\t\t\t[87.23289717600005, 27.829723613000013],\n\t\t\t\t[87.18199589000011, 27.82450429300009],\n\t\t\t\t[87.15579593900009, 27.825796204000042],\n\t\t\t\t[87.11652185100013, 27.84458058700004],\n\t\t\t\t[87.06200321500012, 27.9084268190001],\n\t\t\t\t[87.03053226700013, 27.938089091000037],\n\t\t\t\t[87.0056759040001, 27.951499126],\n\t\t\t\t[86.98872603400008, 27.952480978000054],\n\t\t\t\t[86.98209267100003, 27.950674405000072],\n\t\t\t\t[86.97022587100014, 27.947442525],\n\t\t\t\t[86.94035689300006, 27.943101705000018],\n\t\t\t\t[86.91472538200009, 27.945117086000053],\n\t\t\t\t[86.89307295800012, 27.954186300000018],\n\t\t\t\t[86.87689823400012, 27.970645243],\n\t\t\t\t[86.86816491700012, 27.99472646100004],\n\t\t\t\t[86.86816491700012, 27.994881490000083],\n\t\t\t\t[86.84046634900011, 28.014776917000077],\n\t\t\t\t[86.76997969600006, 28.01208974300006],\n\t\t\t\t[86.73980065900014, 28.02149485300002],\n\t\t\t\t[86.7322042240001, 28.03495656300008],\n\t\t\t\t[86.73597660400003, 28.064851380000093],\n\t\t\t\t[86.73173913600004, 28.07691782600007],\n\t\t\t\t[86.71768314700006, 28.088260804000058],\n\t\t\t\t[86.69964807100013, 28.098751119],\n\t\t\t\t[86.68006270300003, 28.105727437],\n\t\t\t\t[86.66197595200009, 28.106838481000082],\n\t\t\t\t[86.64947025600003, 28.101179911000074],\n\t\t\t\t[86.62714603700005, 28.08348073300006],\n\t\t\t\t[86.6123149010001, 28.080276794000085],\n\t\t\t\t[86.59686364700013, 28.086503805000078],\n\t\t\t\t[86.58311771700005, 28.098027649000088],\n\t\t\t\t[86.56952681500007, 28.106605937000026],\n\t\t\t\t[86.55355879700005, 28.104151306000077],\n\t\t\t\t[86.54415368700006, 28.09301503600004],\n\t\t\t\t[86.54125980600003, 28.078209738000012],\n\t\t\t\t[86.54074304200009, 28.06216420600005],\n\t\t\t\t[86.53836592600004, 28.047178040000077],\n\t\t\t\t[86.5309245200001, 28.03369049100003],\n\t\t\t\t[86.52229455600013, 28.02371694000003],\n\t\t\t\t[86.51619673700009, 28.012244771],\n\t\t\t\t[86.51645511900006, 27.99472646100004],\n\t\t\t\t[86.51676433500006, 27.971432200000024],\n\t\t\t\t[86.51046065300005, 27.952429301000038],\n\t\t\t\t[86.49692142700007, 27.937882385000094],\n\t\t\t\t[86.47547570800003, 27.927598775],\n\t\t\t\t[86.43883711700005, 27.91085561100006],\n\t\t\t\t[86.42529789200012, 27.909925435],\n\t\t\t\t[86.40571252400008, 27.917005107000122],\n\t\t\t\t[86.37196781400013, 27.941964824000095],\n\t\t\t\t[86.36297611500004, 27.946098938000105],\n\t\t\t\t[86.35367435800003, 27.944807028000085],\n\t\t\t\t[86.34561283400006, 27.940931295000027],\n\t\t\t\t[86.33755131000004, 27.93803741500004],\n\t\t\t\t[86.3277327880001, 27.93969106100009],\n\t\t\t\t[86.31822432400003, 27.945788880000052],\n\t\t\t\t[86.29465987200012, 27.97237640400006],\n\t\t\t\t[86.27807173600007, 27.98369354300003],\n\t\t\t\t[86.25900313300014, 27.987646790000028],\n\t\t\t\t[86.23853926600003, 27.98955881800005],\n\t\t\t\t[86.21838545700007, 27.99472646100004],\n\t\t\t\t[86.21792037000006, 27.99493316600008],\n\t\t\t\t[86.21776534000003, 27.99498484300001],\n\t\t\t\t[86.20303755700013, 28.00258127900007],\n\t\t\t\t[86.19600956200009, 28.01457021100002],\n\t\t\t\t[86.18913659700013, 28.043612366000033],\n\t\t\t\t[86.18185022000006, 28.054877828000073],\n\t\t\t\t[86.17446049000006, 28.062448425000028],\n\t\t\t\t[86.17223840400004, 28.071827698000092],\n\t\t\t\t[86.18076501500008, 28.088751729000094],\n\t\t\t\t[86.18717289300008, 28.108698832000087],\n\t\t\t\t[86.18603601100011, 28.133529358000047],\n\t\t\t\t[86.17601078300004, 28.15301137300004],\n\t\t\t\t[86.1559603280001, 28.156525371],\n\t\t\t\t[86.06873050900003, 28.07676279700003],\n\t\t\t\t[86.07017745000013, 28.066711731000098],\n\t\t\t\t[86.0815462650001, 28.0516997270001],\n\t\t\t\t[86.08469852700006, 28.04387074800009],\n\t\t\t\t[86.08392338100003, 28.038548076000055],\n\t\t\t\t[86.07953088400006, 28.021649882000062],\n\t\t\t\t[86.07953088400006, 28.013329977000083],\n\t\t\t\t[86.07761885600013, 28.00694793700005],\n\t\t\t\t[86.07916914900005, 28.001134339000075],\n\t\t\t\t[86.08929772900012, 27.994881490000083],\n\t\t\t\t[86.08940108300004, 27.994881490000083],\n\t\t\t\t[86.08940108300004, 27.99472646100004],\n\t\t\t\t[86.09813439900012, 27.985631409000078],\n\t\t\t\t[86.09803104700006, 27.977518209000053],\n\t\t\t\t[86.09508549000009, 27.968888245000116],\n\t\t\t\t[86.09560225500013, 27.957855326000114],\n\t\t\t\t[86.10056319200004, 27.950233053000048],\n\t\t\t\t[86.10717777500008, 27.9442385870001],\n\t\t\t\t[86.11224206500003, 27.93726226900013],\n\t\t\t\t[86.11286218300012, 27.926797791000084],\n\t\t\t\t[86.10717777500008, 27.922844544],\n\t\t\t\t[86.07565515100009, 27.894784241000067],\n\t\t\t\t[86.06170251500009, 27.889048157000033],\n\t\t\t\t[86.05459969400005, 27.888013072],\n\t\t\t\t[86.0514189050001, 27.887549540000023],\n\t\t\t\t[86.02645918800005, 27.88992665600007],\n\t\t\t\t[85.98026045800009, 27.88517242400006],\n\t\t\t\t[85.9626904700001, 27.891373596000065],\n\t\t\t\t[85.95121830300008, 27.916229961000013],\n\t\t\t\t[85.95183841900007, 27.936797181000102],\n\t\t\t\t[85.95628259300008, 27.956873474000062],\n\t\t\t\t[85.95659265100005, 27.9762262980001],\n\t\t\t\t[85.94398360200012, 27.99472646100004],\n\t\t\t\t[85.9089469810001, 28.022425029000075],\n\t\t\t\t[85.8983016360001, 28.03601593000006],\n\t\t\t\t[85.89044681900009, 28.059192810000056],\n\t\t\t\t[85.88982670100012, 28.071259257000023],\n\t\t\t\t[85.89106693500014, 28.080896912000057],\n\t\t\t\t[85.88910323100004, 28.090276184000103],\n\t\t\t\t[85.87173995000006, 28.110920919000094],\n\t\t\t\t[85.86703739500012, 28.13293508],\n\t\t\t\t[85.86336836800012, 28.14334788000012],\n\t\t\t\t[85.84827885000004, 28.158928325000048],\n\t\t\t\t[85.82688480700011, 28.170478007],\n\t\t\t\t[85.78275313300003, 28.188099671000074],\n\t\t\t\t[85.7566048590001, 28.203240866],\n\t\t\t\t[85.7344873450001, 28.221534323000057],\n\t\t\t\t[85.71557377100004, 28.243367615000082],\n\t\t\t\t[85.69976078300004, 28.269102478],\n\t\t\t\t[85.6980037840001, 28.31344085700003],\n\t\t\t\t[85.69293949400003, 28.33522247300006],\n\t\t\t\t[85.67914188700007, 28.332897034000027],\n\t\t\t\t[85.67598962500011, 28.32473215800009],\n\t\t\t\t[85.67619633000004, 28.315120341000082],\n\t\t\t\t[85.67505944900006, 28.306387024000017],\n\t\t\t\t[85.66813480600007, 28.30054758800013],\n\t\t\t\t[85.6469474700001, 28.293700460000068],\n\t\t\t\t[85.6390926520001, 28.287886862000093],\n\t\t\t\t[85.61180749500005, 28.251144918000094],\n\t\t\t\t[85.59894006300004, 28.25083486000004],\n\t\t\t\t[85.58550419100004, 28.263185526000072],\n\t\t\t\t[85.56529870600014, 28.27538116400008],\n\t\t\t\t[85.54369795800005, 28.28039377900005],\n\t\t\t\t[85.5206502690001, 28.282925924000054],\n\t\t\t\t[85.49755090300005, 28.282615865000068],\n\t\t\t\t[85.47569177300011, 28.279101868000012],\n\t\t\t\t[85.4466496170001, 28.29215016700006],\n\t\t\t\t[85.43156010000007, 28.297059428000082],\n\t\t\t\t[85.41523034700003, 28.2964393110001],\n\t\t\t\t[85.40138106300009, 28.288791199000045],\n\t\t\t\t[85.37781661000008, 28.265976054000035],\n\t\t\t\t[85.36257206200014, 28.259671529000016],\n\t\t\t\t[85.3453638100001, 28.261247660000052],\n\t\t\t\t[85.33482181800008, 28.268689067000068],\n\t\t\t\t[85.32572676600006, 28.277396546000134],\n\t\t\t\t[85.31260095200008, 28.282770895000098],\n\t\t\t\t[85.30102543200013, 28.28106557200003],\n\t\t\t\t[85.27312015800004, 28.269825949000094],\n\t\t\t\t[85.25958093300005, 28.266932068000088],\n\t\t\t\t[85.24340620900006, 28.267913921000073],\n\t\t\t\t[85.22392419500005, 28.2716863000001],\n\t\t\t\t[85.20573409100012, 28.278275045000086],\n\t\t\t\t[85.1735913490001, 28.30431996600005],\n\t\t\t\t[85.15457442200005, 28.30085764600001],\n\t\t\t\t[85.13416223200011, 28.291969300000105],\n\t\t\t\t[85.10940922100008, 28.292253520000074],\n\t\t\t\t[85.08739506100005, 28.304113261000097],\n\t\t\t\t[85.08021203600003, 28.318789368000083],\n\t\t\t\t[85.0818671020001, 28.331702005000082],\n\t\t\t\t[85.08568973800004, 28.361525777000097],\n\t\t\t\t[85.08568973800004, 28.38100779200009],\n\t\t\t\t[85.07757653800013, 28.435681457000058],\n\t\t\t\t[85.08367435700006, 28.44552581800012],\n\t\t\t\t[85.10946089700008, 28.45929758700005],\n\t\t\t\t[85.11555871600012, 28.4727334600001],\n\t\t\t\t[85.11566206800006, 28.491492005000012],\n\t\t\t\t[85.11721236200009, 28.4973314410001],\n\t\t\t\t[85.1231551510001, 28.504591980000058],\n\t\t\t\t[85.14036340400008, 28.510922343000075],\n\t\t\t\t[85.14764978100004, 28.515831604000127],\n\t\t\t\t[85.15374760000003, 28.52490081800009],\n\t\t\t\t[85.1569515380001, 28.533143209000045],\n\t\t\t\t[85.16801029400006, 28.583191833000043],\n\t\t\t\t[85.16098230000006, 28.59499989900003],\n\t\t\t\t[85.11188968900012, 28.6088233440001],\n\t\t\t\t[85.07504439300004, 28.6316643280001],\n\t\t\t\t[85.05494226100006, 28.63869232200001],\n\t\t\t\t[85.03210127800014, 28.634067281000043],\n\t\t\t\t[85.02527998900013, 28.62840871200011],\n\t\t\t\t[85.01876875900012, 28.619856262],\n\t\t\t\t[85.00915694200012, 28.60254465700008],\n\t\t\t\t[85.00249068200003, 28.594431458000074],\n\t\t\t\t[84.99406742400004, 28.5908141070001],\n\t\t\t\t[84.9847656660001, 28.588592021000082],\n\t\t\t\t[84.95494836400007, 28.57430348700011],\n\t\t\t\t[84.94895389800007, 28.568283183000077],\n\t\t\t\t[84.93644820200007, 28.544770406000097],\n\t\t\t\t[84.92849003100008, 28.53846588100008],\n\t\t\t\t[84.91872318600014, 28.535675354000105],\n\t\t\t\t[84.90787113500011, 28.537018942000074],\n\t\t\t\t[84.89143802900003, 28.541773173000067],\n\t\t\t\t[84.87929406700005, 28.54363352400007],\n\t\t\t\t[84.82394860900007, 28.540532939000045],\n\t\t\t\t[84.81195967600013, 28.54197987900004],\n\t\t\t\t[84.79914392100005, 28.54663075800009],\n\t\t\t\t[84.78178064000014, 28.558903910000126],\n\t\t\t\t[84.75563236500005, 28.58541392100004],\n\t\t\t\t[84.73661543800006, 28.594173075000114],\n\t\t\t\t[84.69083011900005, 28.596136780000037],\n\t\t\t\t[84.67775598100008, 28.604405009000075],\n\t\t\t\t[84.68297530100011, 28.65075876900009],\n\t\t\t\t[84.67114139800009, 28.658949483000114],\n\t\t\t\t[84.65227950100007, 28.66238596600006],\n\t\t\t\t[84.63264245600004, 28.668793844000092],\n\t\t\t\t[84.62582116700008, 28.676080221000078],\n\t\t\t\t[84.61620935100007, 28.693650207000033],\n\t\t\t\t[84.6072176510001, 28.69819773400006],\n\t\t\t\t[84.55182051600008, 28.7063884490001],\n\t\t\t\t[84.53197676600007, 28.712692973000017],\n\t\t\t\t[84.51564701300003, 28.721400452000083],\n\t\t\t\t[84.49859379100008, 28.72786000600003],\n\t\t\t\t[84.4757528080001, 28.727291565000073],\n\t\t\t\t[84.45084476800014, 28.73388031000006],\n\t\t\t\t[84.43782230700009, 28.753336487000055],\n\t\t\t\t[84.42273278800008, 28.79917348300002],\n\t\t\t\t[84.41430953000008, 28.808268534],\n\t\t\t\t[84.39307051600014, 28.82433990500006],\n\t\t\t\t[84.37658573500005, 28.848834534],\n\t\t\t\t[84.36630212500006, 28.85674102800006],\n\t\t\t\t[84.3540031330001, 28.861288554000097],\n\t\t\t\t[84.28599694900004, 28.873742574000076],\n\t\t\t\t[84.23514733900004, 28.900020040000115],\n\t\t\t\t[84.2252905100001, 28.914115306],\n\t\t\t\t[84.20672530100012, 28.940663554000068],\n\t\t\t\t[84.2314266360001, 29.025981343000026],\n\t\t\t\t[84.22057458500007, 29.03890045200005],\n\t\t\t\t[84.19819869000008, 29.045308329000093],\n\t\t\t\t[84.17546106000009, 29.05740061400006],\n\t\t\t\t[84.16972497600005, 29.08892323900004],\n\t\t\t\t[84.16621097900008, 29.098457540000126],\n\t\t\t\t[84.16011316000004, 29.105485535000028],\n\t\t\t\t[84.13799564600004, 29.124657492000054],\n\t\t\t\t[84.13225956200006, 29.143803609000045],\n\t\t\t\t[84.14171634900003, 29.160262554000028],\n\t\t\t\t[84.15520389800008, 29.175946351000093],\n\t\t\t\t[84.16166345300007, 29.19253448500008],\n\t\t\t\t[84.15546228100004, 29.206642151000025],\n\t\t\t\t[84.14197473200011, 29.208269959000077],\n\t\t\t\t[84.12600671400008, 29.2062545780001],\n\t\t\t\t[84.11236413600005, 29.20909678200009],\n\t\t\t\t[84.10533614100007, 29.219922994000044],\n\t\t\t\t[84.09913496900009, 29.247001445000095],\n\t\t\t\t[84.08972985800011, 29.256613261],\n\t\t\t\t[84.07205651900011, 29.256974996000096],\n\t\t\t\t[84.05303959200006, 29.25036041300011],\n\t\t\t\t[84.0352112220001, 29.24762156200005],\n\t\t\t\t[84.02151696800007, 29.25976552300007],\n\t\t\t\t[84.01252526900004, 29.270204163000088],\n\t\t\t\t[84.00089807100005, 29.27252960200012],\n\t\t\t\t[83.98823734600012, 29.269532369],\n\t\t\t\t[83.97583500200005, 29.263744609000028],\n\t\t\t\t[83.97325118100008, 29.277025452000046],\n\t\t\t\t[83.96725671400003, 29.284699402000044],\n\t\t\t\t[83.9579549560001, 29.289040222000025],\n\t\t\t\t[83.94555261300013, 29.291830750000074],\n\t\t\t\t[83.93315026800008, 29.291779073000058],\n\t\t\t\t[83.91439172400004, 29.28940195700001],\n\t\t\t\t[83.88343754100003, 29.282012228],\n\t\t\t\t[83.87739139900003, 29.276767070000076],\n\t\t\t\t[83.86886478700012, 29.263434550000042],\n\t\t\t\t[83.86163008600005, 29.26020477300007],\n\t\t\t\t[83.83785892700007, 29.254003601000093],\n\t\t\t\t[83.79321049000004, 29.23475413100006],\n\t\t\t\t[83.77062788900008, 29.232247824000083],\n\t\t\t\t[83.74535811400006, 29.234469910000072],\n\t\t\t\t[83.71972660300008, 29.233591411000035],\n\t\t\t\t[83.6954903570001, 29.22617584200013],\n\t\t\t\t[83.67507816600005, 29.208760885000103],\n\t\t\t\t[83.66774011200005, 29.192327780000127],\n\t\t\t\t[83.66339929300005, 29.174809469000067],\n\t\t\t\t[83.65600956200007, 29.160779318000053],\n\t\t\t\t[83.65499238900003, 29.160413575000078],\n\t\t\t\t[83.63926639800013, 29.15475901300003],\n\t\t\t\t[83.62443526200008, 29.155456645000115],\n\t\t\t\t[83.58381758700006, 29.16214874300003],\n\t\t\t\t[83.57203536000003, 29.168401592000023],\n\t\t\t\t[83.56139001500003, 29.176230570000072],\n\t\t\t\t[83.53596521000003, 29.179227804000064],\n\t\t\t\t[83.52371789500012, 29.183594462000073],\n\t\t\t\t[83.51705163600008, 29.19170766200007],\n\t\t\t\t[83.51457116700004, 29.201810405000018],\n\t\t\t\t[83.51250410900008, 29.223488668000087],\n\t\t\t\t[83.50299564700009, 29.26103159600011],\n\t\t\t\t[83.49338383000008, 29.276146952000104],\n\t\t\t\t[83.47581384300008, 29.28692148900005],\n\t\t\t\t[83.44821862800012, 29.29676584900001],\n\t\t\t\t[83.4372115480001, 29.30524078400002],\n\t\t\t\t[83.42816817300007, 29.33345611600008],\n\t\t\t\t[83.41778120900005, 29.340897523000095],\n\t\t\t\t[83.40501713000009, 29.3464785770001],\n\t\t\t\t[83.39313155100012, 29.35624542300006],\n\t\t\t\t[83.38827396600004, 29.37022389700006],\n\t\t\t\t[83.38941084800013, 29.382445374],\n\t\t\t\t[83.38724043800005, 29.393504130000096],\n\t\t\t\t[83.35700972500013, 29.415363261000024],\n\t\t\t\t[83.35520105000012, 29.427972310000072],\n\t\t\t\t[83.35778487100004, 29.44275177100006],\n\t\t\t\t[83.35520105000012, 29.460735168000056],\n\t\t\t\t[83.32796757000006, 29.48502309200005],\n\t\t\t\t[83.26394047000014, 29.47300832100008],\n\t\t\t\t[83.24719730600009, 29.49473826100011],\n\t\t\t\t[83.24874760000012, 29.506572164000104],\n\t\t\t\t[83.25401859500005, 29.513290101000038],\n\t\t\t\t[83.25990970900006, 29.518767802000028],\n\t\t\t\t[83.26332035400009, 29.52708770800008],\n\t\t\t\t[83.26083988500011, 29.542048035000064],\n\t\t\t\t[83.25257165600004, 29.555199687000126],\n\t\t\t\t[83.22931726100012, 29.575947774000056],\n\t\t\t\t[83.22187585400007, 29.579823507000114],\n\t\t\t\t[83.2049259850001, 29.58491363600011],\n\t\t\t\t[83.19717452000009, 29.58909942700005],\n\t\t\t\t[83.19448734600007, 29.59364695300006],\n\t\t\t\t[83.19086999600006, 29.606901957000062],\n\t\t\t\t[83.18725264500011, 29.612095439000072],\n\t\t\t\t[83.17355839100009, 29.62126800500009],\n\t\t\t\t[83.16208622200014, 29.625169576000033],\n\t\t\t\t[83.15004561400008, 29.62563466400006],\n\t\t\t\t[83.12668786600005, 29.623412577000053],\n\t\t\t\t[83.10028120900006, 29.617676493000104],\n\t\t\t\t[83.09335656700006, 29.615144349000033],\n\t\t\t\t[83.08844730700014, 29.604421488000085],\n\t\t\t\t[83.08555342600005, 29.59039133800009],\n\t\t\t\t[83.07955896000004, 29.579642640000074],\n\t\t\t\t[83.06493453000007, 29.57878997800013],\n\t\t\t\t[83.05449589000011, 29.586050517],\n\t\t\t\t[83.04090498800014, 29.610286764000094],\n\t\t\t\t[83.03289514200009, 29.620467021000067],\n\t\t\t\t[82.9758960370001, 29.664030253000092],\n\t\t\t\t[82.96432051600004, 29.665890605000087],\n\t\t\t\t[82.9420996500001, 29.6629450490001],\n\t\t\t\t[82.93191939300004, 29.664185283000037],\n\t\t\t\t[82.92370284000009, 29.669662984000027],\n\t\t\t\t[82.90913008600012, 29.684623312],\n\t\t\t\t[82.89972497600007, 29.688421529000024],\n\t\t\t\t[82.88008793200004, 29.68110931400004],\n\t\t\t\t[82.8574536540001, 29.666200664000073],\n\t\t\t\t[82.83657637600004, 29.65979278600004],\n\t\t\t\t[82.82236535700014, 29.67795705200008],\n\t\t\t\t[82.81554406800012, 29.690126851000073],\n\t\t\t\t[82.80515710500009, 29.695966289000083],\n\t\t\t\t[82.7930648200001, 29.699506124000052],\n\t\t\t\t[82.78107588700004, 29.705113017000073],\n\t\t\t\t[82.77012048400007, 29.71415639300001],\n\t\t\t\t[82.75151696800003, 29.73932281500005],\n\t\t\t\t[82.69095218900003, 29.780741476000017],\n\t\t\t\t[82.68175378500007, 29.797717183000103],\n\t\t\t\t[82.68464766500006, 29.809706116000072],\n\t\t\t\t[82.68919519100007, 29.81957631400006],\n\t\t\t\t[82.68898848500004, 29.827741191000072],\n\t\t\t\t[82.67730961100006, 29.834407451000075],\n\t\t\t\t[82.66697432500013, 29.83502756700007],\n\t\t\t\t[82.64640710500004, 29.82934316100001],\n\t\t\t\t[82.63586511200009, 29.829033101000036],\n\t\t\t\t[82.61850183100006, 29.839833476000067],\n\t\t\t\t[82.54181400500005, 29.923239238000022],\n\t\t\t\t[82.52424401900004, 29.932385966000098],\n\t\t\t\t[82.47582320100008, 29.945511780000075],\n\t\t\t\t[82.4570646570001, 29.9540900680001],\n\t\t\t\t[82.43892622900006, 29.965768942000082],\n\t\t\t\t[82.4228548590001, 29.979669902000055],\n\t\t\t\t[82.40978072100006, 29.99460439100001],\n\t\t\t\t[82.39443282100007, 30.00313100200013],\n\t\t\t\t[82.37913659700013, 30.00323435500006],\n\t\t\t\t[82.36373702000003, 30.001167298],\n\t\t\t\t[82.34730391400007, 30.003441061000032],\n\t\t\t\t[82.33908736200004, 30.009228821000093],\n\t\t\t\t[82.32715010600009, 30.025713603000057],\n\t\t\t\t[82.31888187700014, 30.031811422000132],\n\t\t\t\t[82.2965059820001, 30.036824036],\n\t\t\t\t[82.27599043800012, 30.036927388000024],\n\t\t\t\t[82.25573327600011, 30.039666240000074],\n\t\t\t\t[82.21067142800007, 30.064419251000075],\n\t\t\t\t[82.19217126400014, 30.06147369400007],\n\t\t\t\t[82.17423954300006, 30.055479228000067],\n\t\t\t\t[82.15382735200012, 30.058166402],\n\t\t\t\t[82.14452559400007, 30.069431865000055],\n\t\t\t\t[82.13522383600014, 30.08974070200007],\n\t\t\t\t[82.12871260600008, 30.110773010000074],\n\t\t\t\t[82.1275757250001, 30.124363912000078],\n\t\t\t\t[82.15098514800013, 30.162242737000057],\n\t\t\t\t[82.15568770300013, 30.181363017000066],\n\t\t\t\t[82.14039148000006, 30.194023743000102],\n\t\t\t\t[82.11424320500004, 30.202188619000125],\n\t\t\t\t[82.09589807100008, 30.21345408200007],\n\t\t\t\t[82.0849943450001, 30.2308173630001],\n\t\t\t\t[82.08210046400012, 30.25732737300011],\n\t\t\t\t[82.09321089700006, 30.31473988900011],\n\t\t\t\t[82.08876672400004, 30.330087789000075],\n\t\t\t\t[82.07321211800013, 30.337219137000105],\n\t\t\t\t[82.04985437000005, 30.339234518000055],\n\t\t\t\t[82.00763472500006, 30.336805726000094],\n\t\t\t\t[81.99817793800014, 30.33406687500006],\n\t\t\t\t[81.98846276900008, 30.329777731],\n\t\t\t\t[81.97885095300006, 30.326832174000074],\n\t\t\t\t[81.96903243000008, 30.32827911400007],\n\t\t\t\t[81.96210778900013, 30.333653463000033],\n\t\t\t\t[81.95011885600007, 30.348381246000045],\n\t\t\t\t[81.94123050900004, 30.353962301000067],\n\t\t\t\t[81.92149011200007, 30.35737294600007],\n\t\t\t\t[81.88717696200007, 30.35499583000005],\n\t\t\t\t[81.84438887500005, 30.371170553000027],\n\t\t\t\t[81.82278812700008, 30.368173320000025],\n\t\t\t\t[81.80149743700008, 30.36130035400005],\n\t\t\t\t[81.77901818800007, 30.35804473900008],\n\t\t\t\t[81.7573657640001, 30.362902324000075],\n\t\t\t\t[81.63571944200004, 30.410961406000055],\n\t\t\t\t[81.61401534000004, 30.416904195000072],\n\t\t\t\t[81.59158776800007, 30.414268697000054],\n\t\t\t\t[81.58507653800007, 30.408119202000066],\n\t\t\t\t[81.58197595200005, 30.399437561000113],\n\t\t\t\t[81.57670495600007, 30.390962626000103],\n\t\t\t\t[81.56326908400007, 30.385588277000053],\n\t\t\t\t[81.54425215700007, 30.38264272100004],\n\t\t\t\t[81.53681075100008, 30.378560283000056],\n\t\t\t\t[81.53195316600005, 30.370343730000016],\n\t\t\t\t[81.52068770400007, 30.33194814000008],\n\t\t\t\t[81.5093705650001, 30.328382467000026],\n\t\t\t\t[81.48306726100009, 30.331896464000053],\n\t\t\t\t[81.46281010000007, 30.34135325100003],\n\t\t\t\t[81.4261198320001, 30.372514140000092],\n\t\t\t\t[81.40741296400012, 30.37918040000001],\n\t\t\t\t[81.38751753800011, 30.37390940300007],\n\t\t\t\t[81.3848820400001, 30.360938619000066],\n\t\t\t\t[81.38725915500004, 30.345125631000045],\n\t\t\t\t[81.38214318800004, 30.3312763470001],\n\t\t\t\t[81.37154952000009, 30.3169102990001],\n\t\t\t\t[81.36803552300012, 30.30104563400009],\n\t\t\t\t[81.36901737500006, 30.26606068900007],\n\t\t\t\t[81.3705159910001, 30.257275696000093],\n\t\t\t\t[81.37692386900011, 30.241204325000027],\n\t\t\t\t[81.37785404500005, 30.232626038],\n\t\t\t\t[81.37439172400013, 30.223117574000113],\n\t\t\t\t[81.36183435100014, 30.20477244100003],\n\t\t\t\t[81.35728682500007, 30.173559876000056],\n\t\t\t\t[81.35005212400011, 30.157230123000105],\n\t\t\t\t[81.33826989700003, 30.143535868000086],\n\t\t\t\t[81.3224052330001, 30.133769023000028],\n\t\t\t\t[81.30953780200008, 30.132063701000064],\n\t\t\t\t[81.29325972600009, 30.132838847000087],\n\t\t\t\t[81.27770511900007, 30.131856995000092],\n\t\t\t\t[81.26695642100003, 30.125087382000075],\n\t\t\t\t[81.26633630400005, 30.117749329000063],\n\t\t\t\t[81.27450118000007, 30.10219472300004],\n\t\t\t\t[81.27594812100006, 30.09537343300009],\n\t\t\t\t[81.27202071100004, 30.07992218],\n\t\t\t\t[81.2679026460001, 30.07205300500003],\n\t\t\t\t[81.2668013920001, 30.06994862900008],\n\t\t\t\t[81.25708622300004, 30.063540752000037],\n\t\t\t\t[81.2395162360001, 30.058786520000055],\n\t\t\t\t[81.22571862800004, 30.050466614000086],\n\t\t\t\t[81.22726892100007, 30.022457987000095],\n\t\t\t\t[81.21683028200005, 30.008195292000025],\n\t\t\t\t[81.19450606300006, 30.004474589],\n\t\t\t\t[81.14810062700013, 30.02323313400008],\n\t\t\t\t[81.12458785000007, 30.02276804700007],\n\t\t\t\t[81.09776778200006, 30.01692860900009],\n\t\t\t\t[81.08484867400006, 30.026178690000094],\n\t\t\t\t[81.08445364600004, 30.027875774000094],\n\t\t\t\t[81.07420332800007, 30.071912334000032],\n\t\t\t\t[81.06660689300008, 30.08715688100007],\n\t\t\t\t[81.04366255800005, 30.12022979700005],\n\t\t\t\t[81.0308984780001, 30.152734274000082],\n\t\t\t\t[81.01942631000009, 30.172267965000074],\n\t\t\t\t[81.00650720200008, 30.188907776000107],\n\t\t\t\t[80.99601688700011, 30.19696930000002],\n\t\t\t\t[81.00330326400012, 30.212730611000083],\n\t\t\t\t[80.99627526900008, 30.226889954000043],\n\t\t\t\t[80.97601810700007, 30.255208638000042],\n\t\t\t\t[80.94377201300011, 30.270143128000072],\n\t\t\t\t[80.86698083500005, 30.28848826100007],\n\t\t\t\t[80.78166304500007, 30.320992737],\n\t\t\t\t[80.76719364400003, 30.331431376000026],\n\t\t\t\t[80.75499800600005, 30.345797425000043],\n\t\t\t\t[80.73536096200007, 30.378198547000054],\n\t\t\t\t[80.72306197200004, 30.392047832000102],\n\t\t\t\t[80.69474328600006, 30.41173655200005],\n\t\t\t\t[80.59635136000003, 30.45979563500002],\n\t\t\t\t[80.57526737500012, 30.466255188000062],\n\t\t\t\t[80.55997115100007, 30.465118306000065],\n\t\t\t\t[80.54508833800008, 30.461035869000042],\n\t\t\t\t[80.52514123600008, 30.458607076000092],\n\t\t\t\t[80.5082947190001, 30.46232777900009],\n\t\t\t\t[80.47542850700006, 30.48046620700002],\n\t\t\t\t[80.42499230900006, 30.49782948800005],\n\t\t\t\t[80.32587691200013, 30.54650868700007],\n\t\t\t\t[80.2528064380001, 30.565008851000087],\n\t\t\t\t[80.21621952300006, 30.566817526000094],\n\t\t\t\t[80.17983931500004, 30.559479472000092],\n\t\t\t\t[80.18841760200007, 30.576997783000067],\n\t\t\t\t[80.19782271300005, 30.591363831000066],\n\t\t\t\t[80.20330041600005, 30.60634999600005],\n\t\t\t\t[80.19988977100013, 30.62588368700004],\n\t\t\t\t[80.19058801300008, 30.637975973000025],\n\t\t\t\t[80.17725549300008, 30.649861552000047],\n\t\t\t\t[80.16692020700003, 30.661902161000043],\n\t\t\t\t[80.16661014800007, 30.674407858000038],\n\t\t\t\t[80.1729146730001, 30.67916208900003],\n\t\t\t\t[80.18200972500006, 30.680040589000058],\n\t\t\t\t[80.19172489400012, 30.679678853000055],\n\t\t\t\t[80.19988977100013, 30.68071238200004],\n\t\t\t\t[80.20702111900005, 30.68613840700003],\n\t\t\t\t[80.23141239400007, 30.724947408000062],\n\t\t\t\t[80.22459110500012, 30.734094137000042],\n\t\t\t\t[80.19606571500009, 30.748098450000057],\n\t\t\t\t[80.16929732200009, 30.78525380400005],\n\t\t\t\t[80.15710168400011, 30.793160299000093],\n\t\t\t\t[80.14066858000012, 30.79321197500009],\n\t\t\t\t[80.10924930900006, 30.778122458],\n\t\t\t\t[80.09219608500007, 30.774505107000024],\n\t\t\t\t[80.06253381400006, 30.784788717000097],\n\t\t\t\t[80.04444706200007, 30.80669952400008],\n\t\t\t\t[80.02863407400008, 30.830780742000016],\n\t\t\t\t[80.00558638600012, 30.847265524000093],\n\t\t\t\t[79.93489302600011, 30.872535299000063],\n\t\t\t\t[79.91936951600007, 30.88118194500005],\n\t\t\t\t[79.91463535600008, 30.88381888700009],\n\t\t\t\t[79.90316369700008, 30.89020863900005],\n\t\t\t\t[79.8804260660001, 30.912842916],\n\t\t\t\t[79.86285607900004, 30.941523336],\n\t\t\t\t[79.85035038300003, 30.954494120000035],\n\t\t\t\t[79.83350386600006, 30.96152211500005],\n\t\t\t\t[79.76064009600009, 30.977231751000105],\n\t\t\t\t[79.73903934800012, 30.979247131000065],\n\t\t\t\t[79.68849979700008, 30.96741322900003],\n\t\t\t\t[79.64819217900003, 30.965759583000093],\n\t\t\t\t[79.63031213400006, 30.962503967000103],\n\t\t\t\t[79.58948775300007, 30.94023142500005],\n\t\t\t\t[79.57780887900009, 30.938371074000045],\n\t\t\t\t[79.56592329900008, 30.942453512000057],\n\t\t\t\t[79.54421919800006, 30.947414449000107],\n\t\t\t\t[79.5296464440001, 30.953563945000084],\n\t\t\t\t[79.51269657400007, 30.966172994000104],\n\t\t\t\t[79.4976070560001, 30.981210836000074],\n\t\t\t\t[79.48820194600006, 30.99449167900009],\n\t\t\t\t[79.48685835800006, 31.00022776300004],\n\t\t\t\t[79.4842745360001, 31.005447083000078],\n\t\t\t\t[79.48076053900013, 31.01004628500003],\n\t\t\t\t[79.47641971900003, 31.014025371000102],\n\t\t\t\t[79.46164025900003, 31.02110504200003],\n\t\t\t\t[79.4463440350001, 31.023792216000047],\n\t\t\t\t[79.43073775300013, 31.023172099000092],\n\t\t\t\t[79.414408, 31.02038157100013],\n\t\t\t\t[79.40159224500013, 31.02363718700012],\n\t\t\t\t[79.3949776610001, 31.036711324000052],\n\t\t\t\t[79.38836307800011, 31.069474182000064],\n\t\t\t\t[79.38259259500006, 31.07833466600009],\n\t\t\t\t[79.37234338400009, 31.094072165000043],\n\t\t\t\t[79.3670479880583, 31.111559061766084],\n\t\t\t\t[79.31941711251294, 31.142279974197177],\n\t\t\t\t[79.30216249530298, 31.163450395319558],\n\t\t\t\t[79.30320907773682, 31.183103768324315],\n\t\t\t\t[79.29807839147153, 31.203242202430214],\n\t\t\t\t[79.28832134985049, 31.225473994629226],\n\t\t\t\t[79.2783162706794, 31.240043992036647],\n\t\t\t\t[79.2528602604927, 31.24543676949139],\n\t\t\t\t[79.24843045010522, 31.256703749478504],\n\t\t\t\t[79.26202358591979, 31.27851309060668],\n\t\t\t\t[79.25411000876994, 31.29900573432724],\n\t\t\t\t[79.2392392007286, 31.311723913427898],\n\t\t\t\t[79.23831863759511, 31.3296556045226],\n\t\t\t\t[79.20762798854088, 31.351372703987124],\n\t\t\t\t[79.19244185390846, 31.369789449823315],\n\t\t\t\t[79.17921754805144, 31.393795999286],\n\t\t\t\t[79.15769333967592, 31.414925750622956],\n\t\t\t\t[79.13139720595568, 31.438433157420082],\n\t\t\t\t[79.07799043411131, 31.461664353726974],\n\t\t\t\t[79.07021024772884, 31.461381390199218],\n\t\t\t\t[79.04993667283924, 31.422952683719416],\n\t\t\t\t[79.01552948833853, 31.383397147758455],\n\t\t\t\t[78.98880090300014, 31.34325592100005],\n\t\t\t\t[78.95955204300003, 31.325117493000036],\n\t\t\t\t[78.94028174400734, 31.301576298907094],\n\t\t\t\t[78.92100839989331, 31.269685496828163],\n\t\t\t\t[78.88697183608144, 31.28417089736905],\n\t\t\t\t[78.86198693800009, 31.291476135],\n\t\t\t\t[78.84865441900007, 31.29090769500003],\n\t\t\t\t[78.82198938000005, 31.29369822200009],\n\t\t\t\t[78.79604781100005, 31.288117167000067],\n\t\t\t\t[78.78447229000005, 31.288272197000097],\n\t\t\t\t[78.75315637200003, 31.30196645100004],\n\t\t\t\t[78.74509484900005, 31.308115947000104],\n\t\t\t\t[78.74085738200006, 31.317727763000036],\n\t\t\t\t[78.73848026600012, 31.334987691000023],\n\t\t\t\t[78.74550826100005, 31.373538310000086],\n\t\t\t\t[78.7600810140001, 31.412037252000047],\n\t\t\t\t[78.76256148300007, 31.44511016900013],\n\t\t\t\t[78.73300256300007, 31.467744446000083],\n\t\t\t\t[78.69538212100014, 31.488104961000104],\n\t\t\t\t[78.69951623500003, 31.51001576800006],\n\t\t\t\t[78.79697798700005, 31.578848775000054],\n\t\t\t\t[78.81403120900006, 31.59502349900005],\n\t\t\t\t[78.81888879400009, 31.607374166000014],\n\t\t\t\t[78.79532434100008, 31.633780823000095],\n\t\t\t\t[78.75811731000005, 31.666595358],\n\t\t\t\t[78.73982385300008, 31.666026917000053],\n\t\t\t\t[78.7313489180001, 31.668042298],\n\t\t\t\t[78.72401086500008, 31.67331329300005],\n\t\t\t\t[78.71842981000009, 31.680599671000024],\n\t\t\t\t[78.71047164000004, 31.698169658],\n\t\t\t\t[78.69806929500004, 31.71103709000009],\n\t\t\t\t[78.69321171100006, 31.71853017200003],\n\t\t\t\t[78.69259159400008, 31.728400370000102],\n\t\t\t\t[78.69517541500005, 31.737960511],\n\t\t\t\t[78.69558882600006, 31.746693827000072],\n\t\t\t\t[78.67088749200008, 31.770516663000038],\n\t\t\t\t[78.67409143000003, 31.786949768000014],\n\t\t\t\t[78.7003430580001, 31.821676331000035],\n\t\t\t\t[78.70664758300006, 31.840796611000044],\n\t\t\t\t[78.71419234300004, 31.88301625600012],\n\t\t\t\t[78.72018680900004, 31.902911682000124],\n\t\t\t\t[78.7419942630001, 31.945338033000056],\n\t\t\t\t[78.74457808500011, 31.964199931000067],\n\t\t\t\t[78.73382938700007, 31.984663798000028],\n\t\t\t\t[78.72215051300009, 31.99458567300003],\n\t\t\t\t[78.67832889800007, 32.01675486300006],\n\t\t\t\t[78.64928674300012, 32.036443583],\n\t\t\t\t[78.55182499200004, 32.15039011700007],\n\t\t\t\t[78.53497847500006, 32.18134429900006],\n\t\t\t\t[78.51306766800008, 32.2075700890001],\n\t\t\t\t[78.47648075400014, 32.22441660600008],\n\t\t\t\t[78.46901739200007, 32.226532615000096],\n\t\t\t\t[78.46854076900007, 32.22666774700009],\n\t\t\t\t[78.45798059100014, 32.229661764000085],\n\t\t\t\t[78.45632694500006, 32.24211578400009],\n\t\t\t\t[78.46139123600005, 32.26015085900009],\n\t\t\t\t[78.46273482300012, 32.28180328400008],\n\t\t\t\t[78.43886031100004, 32.37329640700004],\n\t\t\t\t[78.43596643100005, 32.377973125],\n\t\t\t\t[78.43451949100006, 32.38376088500006],\n\t\t\t\t[78.43637984200006, 32.39616322900004],\n\t\t\t\t[78.44144413200013, 32.40494822200013],\n\t\t\t\t[78.44816206900003, 32.41065846800008],\n\t\t\t\t[78.45219283000006, 32.41678212500004],\n\t\t\t\t[78.44878218600013, 32.42678151500006],\n\t\t\t\t[78.40919803900005, 32.4766234340001],\n\t\t\t\t[78.3809827070001, 32.528041484000084],\n\t\t\t\t[78.38480676200004, 32.54754933700006],\n\t\t\t\t[78.40816451000006, 32.55837555],\n\t\t\t\t[78.44754195200011, 32.566256205000045],\n\t\t\t\t[78.58985884700007, 32.569925232000045],\n\t\t\t\t[78.63016646300008, 32.57801259400004],\n\t\t\t\t[78.64773645100007, 32.58597076500011],\n\t\t\t\t[78.66489302600013, 32.59901906300006],\n\t\t\t\t[78.69445194500008, 32.629663188000066],\n\t\t\t\t[78.7132621670001, 32.637518006],\n\t\t\t\t[78.73682661900011, 32.629844056000124],\n\t\t\t\t[78.75098596200013, 32.61279083300009],\n\t\t\t\t[78.74912561100012, 32.5958668010001],\n\t\t\t\t[78.74065067600003, 32.578684387000024],\n\t\t\t\t[78.73496626800011, 32.56064931300004],\n\t\t\t\t[78.73692997300003, 32.54579233800008],\n\t\t\t\t[78.75470666500013, 32.493805847000075],\n\t\t\t\t[78.77144982900012, 32.461663106000046],\n\t\t\t\t[78.85568241400006, 32.40045237300011],\n\t\t\t\t[78.88152063000013, 32.37626780200013],\n\t\t\t\t[78.9112862550001, 32.35474456800007],\n\t\t\t\t[78.94342899600014, 32.346372986000105],\n\t\t\t\t[78.97619185400004, 32.36161753300006],\n\t\t\t\t[78.98983443200012, 32.364098003000024],\n\t\t\t\t[79.01474247300007, 32.373994039000095],\n\t\t\t\t[79.02817834500007, 32.377094626000044],\n\t\t\t\t[79.03965051300008, 32.37598358100006],\n\t\t\t\t[79.0663155520001, 32.37006663100006],\n\t\t\t\t[79.07530725100014, 32.370790100000036],\n\t\t\t\t[79.0917403570001, 32.39055633500003],\n\t\t\t\t[79.10290246600005, 32.449855042000124],\n\t\t\t\t[79.11292769400006, 32.47238596700005],\n\t\t\t\t[79.13287479700011, 32.4854601040001],\n\t\t\t\t[79.16140018800013, 32.496467184],\n\t\t\t\t[79.19116581200012, 32.504270325],\n\t\t\t\t[79.21524703000006, 32.507913513000105],\n\t\t\t\t[79.23560754400012, 32.504296163000035],\n\t\t\t\t[79.28741156145267, 32.53257939116813],\n\t\t\t\t[79.32046626650504, 32.59226722135526],\n\t\t\t\t[79.37947682579494, 32.57644972217696],\n\t\t\t\t[79.40682034478317, 32.52968335070614],\n\t\t\t\t[79.44349727169374, 32.53477259180094],\n\t\t\t\t[79.47211298523796, 32.56547177661887],\n\t\t\t\t[79.51574063362341, 32.608119744630585],\n\t\t\t\t[79.53120131304826, 32.648316794003655],\n\t\t\t\t[79.57617012539868, 32.6706463645242],\n\t\t\t\t[79.62067291506752, 32.72872513425561],\n\t\t\t\t[79.61391341067542, 32.76503545442273],\n\t\t\t\t[79.56409288128151, 32.793927891059354],\n\t\t\t\t[79.4710886681076, 32.908959488689504],\n\t\t\t\t[79.41408948759245, 32.9720529162554],\n\t\t\t\t[79.3784615590933, 32.97888079862581],\n\t\t\t\t[79.33358605900014, 32.99429209500006],\n\t\t\t\t[79.33978723100012, 33.013257345000014],\n\t\t\t\t[79.39927298712544, 33.026877543090805],\n\t\t\t\t[79.38106298759733, 33.06176785943445],\n\t\t\t\t[79.3731702070001, 33.11214019800006],\n\t\t\t\t[79.42347470306436, 33.15782502934888],\n\t\t\t\t[79.45609607657275, 33.25039903388836],\n\t\t\t\t[79.42008441515759, 33.27516911050025],\n\t\t\t\t[79.34030669939472, 33.27513188662732],\n\t\t\t\t[79.26006124250934, 33.29177628972042],\n\t\t\t\t[79.15021349475705, 33.29255492117272],\n\t\t\t\t[79.12503824122189, 33.29020260316764],\n\t\t\t\t[79.09802822725385, 33.28765466454805],\n\t\t\t\t[79.07504815721146, 33.29574255484219],\n\t\t\t\t[79.05327756453967, 33.307872984457326],\n\t\t\t\t[79.02304063027336, 33.31798038693261],\n\t\t\t\t[78.99344870739196, 33.330781826020484],\n\t\t\t\t[78.96498571648198, 33.344254148471954],\n\t\t\t\t[78.91769413200012, 33.386257833000045]\n\t\t\t]\n\t\t]\n\t},\n\t\"india\": {\n\t\t\"stop\": 0.5622801389605236,\n\t\t\"anchor\": [80.10836486026088, 22.5],\n\t\t\"border\": [\n\t\t\t[\n\t\t\t\t[78.79898227941202, 33.5],\n\t\t\t\t[78.80090539600008, 33.494235738],\n\t\t\t\t[78.82426314300005, 33.46105946900006],\n\t\t\t\t[78.91594777500006, 33.387655981000094],\n\t\t\t\t[78.91769413200012, 33.386257833000045],\n\t\t\t\t[78.96498571648198, 33.344254148471954],\n\t\t\t\t[78.99344870739196, 33.330781826020484],\n\t\t\t\t[79.02304063027336, 33.31798038693261],\n\t\t\t\t[79.05327756453967, 33.307872984457326],\n\t\t\t\t[79.07504815721146, 33.29574255484219],\n\t\t\t\t[79.09802822725385, 33.28765466454805],\n\t\t\t\t[79.12503824122189, 33.29020260316764],\n\t\t\t\t[79.15021349475705, 33.29255492117272],\n\t\t\t\t[79.26006124250934, 33.29177628972042],\n\t\t\t\t[79.34030669939472, 33.27513188662732],\n\t\t\t\t[79.42008441515759, 33.27516911050025],\n\t\t\t\t[79.45609607657275, 33.25039903388836],\n\t\t\t\t[79.42347470306436, 33.15782502934888],\n\t\t\t\t[79.3731702070001, 33.11214019800006],\n\t\t\t\t[79.38106298759733, 33.06176785943445],\n\t\t\t\t[79.39927298712544, 33.026877543090805],\n\t\t\t\t[79.33978723100012, 33.013257345000014],\n\t\t\t\t[79.33358605900014, 32.99429209500006],\n\t\t\t\t[79.3784615590933, 32.97888079862581],\n\t\t\t\t[79.41408948759245, 32.9720529162554],\n\t\t\t\t[79.4710886681076, 32.908959488689504],\n\t\t\t\t[79.56409288128151, 32.793927891059354],\n\t\t\t\t[79.61391341067542, 32.76503545442273],\n\t\t\t\t[79.62067291506752, 32.72872513425561],\n\t\t\t\t[79.57617012539868, 32.6706463645242],\n\t\t\t\t[79.53120131304826, 32.648316794003655],\n\t\t\t\t[79.51574063362341, 32.608119744630585],\n\t\t\t\t[79.47211298523796, 32.56547177661887],\n\t\t\t\t[79.44349727169374, 32.53477259180094],\n\t\t\t\t[79.40682034478317, 32.52968335070614],\n\t\t\t\t[79.37947682579494, 32.57644972217696],\n\t\t\t\t[79.32046626650504, 32.59226722135526],\n\t\t\t\t[79.28741156145267, 32.53257939116813],\n\t\t\t\t[79.23560754400012, 32.504296163000035],\n\t\t\t\t[79.21524703000006, 32.507913513000105],\n\t\t\t\t[79.19116581200012, 32.504270325],\n\t\t\t\t[79.16140018800013, 32.496467184],\n\t\t\t\t[79.13287479700011, 32.4854601040001],\n\t\t\t\t[79.11292769400006, 32.47238596700005],\n\t\t\t\t[79.10290246600005, 32.449855042000124],\n\t\t\t\t[79.0917403570001, 32.39055633500003],\n\t\t\t\t[79.07530725100014, 32.370790100000036],\n\t\t\t\t[79.0663155520001, 32.37006663100006],\n\t\t\t\t[79.03965051300008, 32.37598358100006],\n\t\t\t\t[79.02817834500007, 32.377094626000044],\n\t\t\t\t[79.01474247300007, 32.373994039000095],\n\t\t\t\t[78.98983443200012, 32.364098003000024],\n\t\t\t\t[78.97619185400004, 32.36161753300006],\n\t\t\t\t[78.94342899600014, 32.346372986000105],\n\t\t\t\t[78.9112862550001, 32.35474456800007],\n\t\t\t\t[78.88152063000013, 32.37626780200013],\n\t\t\t\t[78.85568241400006, 32.40045237300011],\n\t\t\t\t[78.77144982900012, 32.461663106000046],\n\t\t\t\t[78.75470666500013, 32.493805847000075],\n\t\t\t\t[78.73692997300003, 32.54579233800008],\n\t\t\t\t[78.73496626800011, 32.56064931300004],\n\t\t\t\t[78.74065067600003, 32.578684387000024],\n\t\t\t\t[78.74912561100012, 32.5958668010001],\n\t\t\t\t[78.75098596200013, 32.61279083300009],\n\t\t\t\t[78.73682661900011, 32.629844056000124],\n\t\t\t\t[78.7132621670001, 32.637518006],\n\t\t\t\t[78.69445194500008, 32.629663188000066],\n\t\t\t\t[78.66489302600013, 32.59901906300006],\n\t\t\t\t[78.64773645100007, 32.58597076500011],\n\t\t\t\t[78.63016646300008, 32.57801259400004],\n\t\t\t\t[78.58985884700007, 32.569925232000045],\n\t\t\t\t[78.44754195200011, 32.566256205000045],\n\t\t\t\t[78.40816451000006, 32.55837555],\n\t\t\t\t[78.38480676200004, 32.54754933700006],\n\t\t\t\t[78.3809827070001, 32.528041484000084],\n\t\t\t\t[78.40919803900005, 32.4766234340001],\n\t\t\t\t[78.44878218600013, 32.42678151500006],\n\t\t\t\t[78.45219283000006, 32.41678212500004],\n\t\t\t\t[78.44816206900003, 32.41065846800008],\n\t\t\t\t[78.44144413200013, 32.40494822200013],\n\t\t\t\t[78.43637984200006, 32.39616322900004],\n\t\t\t\t[78.43451949100006, 32.38376088500006],\n\t\t\t\t[78.43596643100005, 32.377973125],\n\t\t\t\t[78.43886031100004, 32.37329640700004],\n\t\t\t\t[78.46273482300012, 32.28180328400008],\n\t\t\t\t[78.46139123600005, 32.26015085900009],\n\t\t\t\t[78.45632694500006, 32.24211578400009],\n\t\t\t\t[78.45798059100014, 32.229661764000085],\n\t\t\t\t[78.46854076900007, 32.22666774700009],\n\t\t\t\t[78.46901739200007, 32.226532615000096],\n\t\t\t\t[78.47648075400014, 32.22441660600008],\n\t\t\t\t[78.51306766800008, 32.2075700890001],\n\t\t\t\t[78.53497847500006, 32.18134429900006],\n\t\t\t\t[78.55182499200004, 32.15039011700007],\n\t\t\t\t[78.64928674300012, 32.036443583],\n\t\t\t\t[78.67832889800007, 32.01675486300006],\n\t\t\t\t[78.72215051300009, 31.99458567300003],\n\t\t\t\t[78.73382938700007, 31.984663798000028],\n\t\t\t\t[78.74457808500011, 31.964199931000067],\n\t\t\t\t[78.7419942630001, 31.945338033000056],\n\t\t\t\t[78.72018680900004, 31.902911682000124],\n\t\t\t\t[78.71419234300004, 31.88301625600012],\n\t\t\t\t[78.70664758300006, 31.840796611000044],\n\t\t\t\t[78.7003430580001, 31.821676331000035],\n\t\t\t\t[78.67409143000003, 31.786949768000014],\n\t\t\t\t[78.67088749200008, 31.770516663000038],\n\t\t\t\t[78.69558882600006, 31.746693827000072],\n\t\t\t\t[78.69517541500005, 31.737960511],\n\t\t\t\t[78.69259159400008, 31.728400370000102],\n\t\t\t\t[78.69321171100006, 31.71853017200003],\n\t\t\t\t[78.69806929500004, 31.71103709000009],\n\t\t\t\t[78.71047164000004, 31.698169658],\n\t\t\t\t[78.71842981000009, 31.680599671000024],\n\t\t\t\t[78.72401086500008, 31.67331329300005],\n\t\t\t\t[78.7313489180001, 31.668042298],\n\t\t\t\t[78.73982385300008, 31.666026917000053],\n\t\t\t\t[78.75811731000005, 31.666595358],\n\t\t\t\t[78.79532434100008, 31.633780823000095],\n\t\t\t\t[78.81888879400009, 31.607374166000014],\n\t\t\t\t[78.81403120900006, 31.59502349900005],\n\t\t\t\t[78.79697798700005, 31.578848775000054],\n\t\t\t\t[78.69951623500003, 31.51001576800006],\n\t\t\t\t[78.69538212100014, 31.488104961000104],\n\t\t\t\t[78.73300256300007, 31.467744446000083],\n\t\t\t\t[78.76256148300007, 31.44511016900013],\n\t\t\t\t[78.7600810140001, 31.412037252000047],\n\t\t\t\t[78.74550826100005, 31.373538310000086],\n\t\t\t\t[78.73848026600012, 31.334987691000023],\n\t\t\t\t[78.74085738200006, 31.317727763000036],\n\t\t\t\t[78.74509484900005, 31.308115947000104],\n\t\t\t\t[78.75315637200003, 31.30196645100004],\n\t\t\t\t[78.78447229000005, 31.288272197000097],\n\t\t\t\t[78.79604781100005, 31.288117167000067],\n\t\t\t\t[78.82198938000005, 31.29369822200009],\n\t\t\t\t[78.84865441900007, 31.29090769500003],\n\t\t\t\t[78.86198693800009, 31.291476135],\n\t\t\t\t[78.88697183608144, 31.28417089736905],\n\t\t\t\t[78.92100839989331, 31.269685496828163],\n\t\t\t\t[78.94028174400734, 31.301576298907094],\n\t\t\t\t[78.95955204300003, 31.325117493000036],\n\t\t\t\t[78.98880090300014, 31.34325592100005],\n\t\t\t\t[79.01552948833853, 31.383397147758455],\n\t\t\t\t[79.04993667283924, 31.422952683719416],\n\t\t\t\t[79.07021024772884, 31.461381390199218],\n\t\t\t\t[79.07799043411131, 31.461664353726974],\n\t\t\t\t[79.13139720595568, 31.438433157420082],\n\t\t\t\t[79.15769333967592, 31.414925750622956],\n\t\t\t\t[79.17921754805144, 31.393795999286],\n\t\t\t\t[79.19244185390846, 31.369789449823315],\n\t\t\t\t[79.20762798854088, 31.351372703987124],\n\t\t\t\t[79.23831863759511, 31.3296556045226],\n\t\t\t\t[79.2392392007286, 31.311723913427898],\n\t\t\t\t[79.25411000876994, 31.29900573432724],\n\t\t\t\t[79.26202358591979, 31.27851309060668],\n\t\t\t\t[79.24843045010522, 31.256703749478504],\n\t\t\t\t[79.2528602604927, 31.24543676949139],\n\t\t\t\t[79.2783162706794, 31.240043992036647],\n\t\t\t\t[79.28832134985049, 31.225473994629226],\n\t\t\t\t[79.29807839147153, 31.203242202430214],\n\t\t\t\t[79.30320907773682, 31.183103768324315],\n\t\t\t\t[79.30216249530298, 31.163450395319558],\n\t\t\t\t[79.31941711251294, 31.142279974197177],\n\t\t\t\t[79.3670479880583, 31.111559061766084],\n\t\t\t\t[79.37234338400009, 31.094072165000043],\n\t\t\t\t[79.38259259500006, 31.07833466600009],\n\t\t\t\t[79.38836307800011, 31.069474182000064],\n\t\t\t\t[79.3949776610001, 31.036711324000052],\n\t\t\t\t[79.40159224500013, 31.02363718700012],\n\t\t\t\t[79.414408, 31.02038157100013],\n\t\t\t\t[79.43073775300013, 31.023172099000092],\n\t\t\t\t[79.4463440350001, 31.023792216000047],\n\t\t\t\t[79.46164025900003, 31.02110504200003],\n\t\t\t\t[79.47641971900003, 31.014025371000102],\n\t\t\t\t[79.48076053900013, 31.01004628500003],\n\t\t\t\t[79.4842745360001, 31.005447083000078],\n\t\t\t\t[79.48685835800006, 31.00022776300004],\n\t\t\t\t[79.48820194600006, 30.99449167900009],\n\t\t\t\t[79.4976070560001, 30.981210836000074],\n\t\t\t\t[79.51269657400007, 30.966172994000104],\n\t\t\t\t[79.5296464440001, 30.953563945000084],\n\t\t\t\t[79.54421919800006, 30.947414449000107],\n\t\t\t\t[79.56592329900008, 30.942453512000057],\n\t\t\t\t[79.57780887900009, 30.938371074000045],\n\t\t\t\t[79.58948775300007, 30.94023142500005],\n\t\t\t\t[79.63031213400006, 30.962503967000103],\n\t\t\t\t[79.64819217900003, 30.965759583000093],\n\t\t\t\t[79.68849979700008, 30.96741322900003],\n\t\t\t\t[79.73903934800012, 30.979247131000065],\n\t\t\t\t[79.76064009600009, 30.977231751000105],\n\t\t\t\t[79.83350386600006, 30.96152211500005],\n\t\t\t\t[79.85035038300003, 30.954494120000035],\n\t\t\t\t[79.86285607900004, 30.941523336],\n\t\t\t\t[79.8804260660001, 30.912842916],\n\t\t\t\t[79.90316369700008, 30.89020863900005],\n\t\t\t\t[79.91463535600008, 30.88381888700009],\n\t\t\t\t[79.91936951600007, 30.88118194500005],\n\t\t\t\t[79.93489302600011, 30.872535299000063],\n\t\t\t\t[80.00558638600012, 30.847265524000093],\n\t\t\t\t[80.02863407400008, 30.830780742000016],\n\t\t\t\t[80.04444706200007, 30.80669952400008],\n\t\t\t\t[80.06253381400006, 30.784788717000097],\n\t\t\t\t[80.09219608500007, 30.774505107000024],\n\t\t\t\t[80.10924930900006, 30.778122458],\n\t\t\t\t[80.14066858000012, 30.79321197500009],\n\t\t\t\t[80.15710168400011, 30.793160299000093],\n\t\t\t\t[80.16929732200009, 30.78525380400005],\n\t\t\t\t[80.19606571500009, 30.748098450000057],\n\t\t\t\t[80.22459110500012, 30.734094137000042],\n\t\t\t\t[80.23141239400007, 30.724947408000062],\n\t\t\t\t[80.20702111900005, 30.68613840700003],\n\t\t\t\t[80.19988977100013, 30.68071238200004],\n\t\t\t\t[80.19172489400012, 30.679678853000055],\n\t\t\t\t[80.18200972500006, 30.680040589000058],\n\t\t\t\t[80.1729146730001, 30.67916208900003],\n\t\t\t\t[80.16661014800007, 30.674407858000038],\n\t\t\t\t[80.16692020700003, 30.661902161000043],\n\t\t\t\t[80.17725549300008, 30.649861552000047],\n\t\t\t\t[80.19058801300008, 30.637975973000025],\n\t\t\t\t[80.19988977100013, 30.62588368700004],\n\t\t\t\t[80.20330041600005, 30.60634999600005],\n\t\t\t\t[80.19782271300005, 30.591363831000066],\n\t\t\t\t[80.18841760200007, 30.576997783000067],\n\t\t\t\t[80.17983931500004, 30.559479472000092],\n\t\t\t\t[80.21621952300006, 30.566817526000094],\n\t\t\t\t[80.2528064380001, 30.565008851000087],\n\t\t\t\t[80.32587691200013, 30.54650868700007],\n\t\t\t\t[80.42499230900006, 30.49782948800005],\n\t\t\t\t[80.47542850700006, 30.48046620700002],\n\t\t\t\t[80.5082947190001, 30.46232777900009],\n\t\t\t\t[80.52514123600008, 30.458607076000092],\n\t\t\t\t[80.54508833800008, 30.461035869000042],\n\t\t\t\t[80.55997115100007, 30.465118306000065],\n\t\t\t\t[80.57526737500012, 30.466255188000062],\n\t\t\t\t[80.59635136000003, 30.45979563500002],\n\t\t\t\t[80.69474328600006, 30.41173655200005],\n\t\t\t\t[80.72306197200004, 30.392047832000102],\n\t\t\t\t[80.73536096200007, 30.378198547000054],\n\t\t\t\t[80.75499800600005, 30.345797425000043],\n\t\t\t\t[80.76719364400003, 30.331431376000026],\n\t\t\t\t[80.78166304500007, 30.320992737],\n\t\t\t\t[80.86698083500005, 30.28848826100007],\n\t\t\t\t[80.94377201300011, 30.270143128000072],\n\t\t\t\t[80.97601810700007, 30.255208638000042],\n\t\t\t\t[80.99627526900008, 30.226889954000043],\n\t\t\t\t[81.00330326400012, 30.212730611000083],\n\t\t\t\t[80.99601688700011, 30.19696930000002],\n\t\t\t\t[80.98816225269584, 30.196555926350566],\n\t\t\t\t[80.92082703591576, 30.176660408536822],\n\t\t\t\t[80.903309336412, 30.180432806924035],\n\t\t\t\t[80.89364690080846, 30.198104359137524],\n\t\t\t\t[80.8838787660946, 30.210405146915726],\n\t\t\t\t[80.88368373459112, 30.210280032524576],\n\t\t\t\t[80.8679110110001, 30.200173238000062],\n\t\t\t\t[80.85039270000004, 30.181931458000022],\n\t\t\t\t[80.83644006400004, 30.170045879000085],\n\t\t\t\t[80.84966923100006, 30.143380840000034],\n\t\t\t\t[80.82982548000007, 30.11712921200011],\n\t\t\t\t[80.76967411300012, 30.077286682000093],\n\t\t\t\t[80.75572147700012, 30.06457428000003],\n\t\t\t\t[80.72574914600011, 30.02276804700007],\n\t\t\t\t[80.71582727100008, 30.013311259000105],\n\t\t\t\t[80.68017053200003, 29.99207224500013],\n\t\t\t\t[80.65412561000005, 29.970574849000073],\n\t\t\t\t[80.64141320800007, 29.96344350200006],\n\t\t\t\t[80.62229292800009, 29.958172506000025],\n\t\t\t\t[80.58622277800009, 29.95414174500003],\n\t\t\t\t[80.57133996600004, 29.946855367000055],\n\t\t\t\t[80.56286503100006, 29.92969879200008],\n\t\t\t\t[80.5495325120001, 29.893680319000097],\n\t\t\t\t[80.52731164500005, 29.86241607700002],\n\t\t\t\t[80.47615197800008, 29.806140442000114],\n\t\t\t\t[80.45486128700009, 29.79058583600009],\n\t\t\t\t[80.39522668500007, 29.776581523000075],\n\t\t\t\t[80.36897505700006, 29.757926330000103],\n\t\t\t\t[80.35429895100009, 29.730279440000103],\n\t\t\t\t[80.35440230300009, 29.704880473000102],\n\t\t\t\t[80.36391076700005, 29.679714050000072],\n\t\t\t\t[80.37755334500008, 29.652945659000082],\n\t\t\t\t[80.38675175000009, 29.626823222],\n\t\t\t\t[80.38520145600006, 29.604834900000114],\n\t\t\t\t[80.37331587800003, 29.58419016500001],\n\t\t\t\t[80.35078495300013, 29.562072652],\n\t\t\t\t[80.3451005450001, 29.558351949000084],\n\t\t\t\t[80.33269820200007, 29.552460836000094],\n\t\t\t\t[80.32722050000012, 29.548585103000036],\n\t\t\t\t[80.32360314900012, 29.541660462000053],\n\t\t\t\t[80.3250500900001, 29.535510966000075],\n\t\t\t\t[80.32763391200012, 29.529929911000053],\n\t\t\t\t[80.32722050000012, 29.524839783000075],\n\t\t\t\t[80.3200891520001, 29.515822245000024],\n\t\t\t\t[80.31151086400013, 29.508122457000027],\n\t\t\t\t[80.29146040900008, 29.49473826100011],\n\t\t\t\t[80.29115035000012, 29.494609070000067],\n\t\t\t\t[80.28205529800005, 29.48429962200005],\n\t\t\t\t[80.27306359800008, 29.47866689100003],\n\t\t\t\t[80.26624231000005, 29.47212982200007],\n\t\t\t\t[80.26345178200006, 29.459236552000064],\n\t\t\t\t[80.25745731700005, 29.450063986000075],\n\t\t\t\t[80.22831180800006, 29.441718242],\n\t\t\t\t[80.21766646400005, 29.434638570000075],\n\t\t\t\t[80.21373905400009, 29.416887716000062],\n\t\t\t\t[80.22097375500005, 29.4001187140001],\n\t\t\t\t[80.24216109200012, 29.367407532000087],\n\t\t\t\t[80.24949914600006, 29.326996562000105],\n\t\t\t\t[80.25497684700008, 29.316635437000016],\n\t\t\t\t[80.26355513600004, 29.315317688000064],\n\t\t\t\t[80.27275354000011, 29.315705261000048],\n\t\t\t\t[80.28009159300012, 29.310150045000043],\n\t\t\t\t[80.28277876900012, 29.29131398500003],\n\t\t\t\t[80.27874800600006, 29.26808542900001],\n\t\t\t\t[80.25818078600014, 29.202456360000085],\n\t\t\t\t[80.24867232300005, 29.204394226000105],\n\t\t\t\t[80.23606327400006, 29.213075867000057],\n\t\t\t\t[80.21880334400004, 29.21108632400002],\n\t\t\t\t[80.21373905400009, 29.196565246],\n\t\t\t\t[80.23048221800013, 29.154733174000015],\n\t\t\t\t[80.23306604000004, 29.139307760000023],\n\t\t\t\t[80.22066369600003, 29.12607859300003],\n\t\t\t\t[80.20144006400005, 29.121169332000093],\n\t\t\t\t[80.18056278500006, 29.12132436100005],\n\t\t\t\t[80.16350956300005, 29.1233655810001],\n\t\t\t\t[80.13260705600004, 29.11021392800002],\n\t\t\t\t[80.11307336500005, 29.072205913000104],\n\t\t\t\t[80.10470178300005, 29.027609151000078],\n\t\t\t\t[80.10790572100012, 28.99476877900007],\n\t\t\t\t[80.10790572100012, 28.99458791100001],\n\t\t\t\t[80.09943078600008, 28.977276306000093],\n\t\t\t\t[80.08516809100013, 28.967483623000035],\n\t\t\t\t[80.06842492700008, 28.959938864],\n\t\t\t\t[80.05292199700006, 28.94911265000006],\n\t\t\t\t[80.04051965400004, 28.932808737000116],\n\t\t\t\t[80.03390507000012, 28.915936381000037],\n\t\t\t\t[80.03111454300006, 28.897797953000108],\n\t\t\t\t[80.03028772000005, 28.877669983000132],\n\t\t\t\t[80.0363855390001, 28.837026469000094],\n\t\t\t\t[80.05478234800006, 28.824184876000103],\n\t\t\t\t[80.07305357600006, 28.820924647000098],\n\t\t\t\t[80.08186079900014, 28.819353129],\n\t\t\t\t[80.11421024600014, 28.80258412700003],\n\t\t\t\t[80.14759322100008, 28.763310038000057],\n\t\t\t\t[80.16206262200012, 28.753284811000057],\n\t\t\t\t[80.18118290200005, 28.74729034500011],\n\t\t\t\t[80.21642622900009, 28.74194183400006],\n\t\t\t\t[80.23327274600007, 28.732717591000053],\n\t\t\t\t[80.23895715300011, 28.726258037],\n\t\t\t\t[80.24939579300008, 28.71021250500003],\n\t\t\t\t[80.25704390500005, 28.7027452600001],\n\t\t\t\t[80.26520878100007, 28.69928293800008],\n\t\t\t\t[80.28339888500011, 28.6953555300001],\n\t\t\t\t[80.29104699700008, 28.689671123000053],\n\t\t\t\t[80.31833215400007, 28.64011342400009],\n\t\t\t\t[80.32970096800005, 28.627478537000073],\n\t\t\t\t[80.34975142400003, 28.620217998000086],\n\t\t\t\t[80.3690784100001, 28.622646789000058],\n\t\t\t\t[80.38830204300012, 28.627245993000102],\n\t\t\t\t[80.40835249900005, 28.626341655000047],\n\t\t\t\t[80.42654260300009, 28.616807353000056],\n\t\t\t\t[80.46881392500006, 28.571848857000035],\n\t\t\t\t[80.48845096900004, 28.562443746],\n\t\t\t\t[80.49341190600006, 28.575647074000088],\n\t\t\t\t[80.48493697100008, 28.63928660100008],\n\t\t\t\t[80.4876241450001, 28.65646901500004],\n\t\t\t\t[80.49754602100006, 28.670137431000043],\n\t\t\t\t[80.51759647600005, 28.680033468000133],\n\t\t\t\t[80.53444380100007, 28.679555368000095],\n\t\t\t\t[80.55583703600013, 28.67894826200005],\n\t\t\t\t[80.55904097500007, 28.67303131200005],\n\t\t\t\t[80.55738732900005, 28.664349671000068],\n\t\t\t\t[80.55687056500011, 28.655022075000048],\n\t\t\t\t[80.56358850100014, 28.647038066000064],\n\t\t\t\t[80.58136519400006, 28.638950704000067],\n\t\t\t\t[80.59852176900012, 28.633783061000074],\n\t\t\t\t[80.6356254480001, 28.627866109000067],\n\t\t\t\t[80.64833785000008, 28.61975291000006],\n\t\t\t\t[80.66818160000014, 28.586344097000094],\n\t\t\t\t[80.6786202400001, 28.57471689800012],\n\t\t\t\t[80.69577681500004, 28.567508036000063],\n\t\t\t\t[80.72709273300006, 28.559679057000054],\n\t\t\t\t[80.74352583900003, 28.549963887],\n\t\t\t\t[80.78166304500007, 28.514746399000032],\n\t\t\t\t[80.79840620900012, 28.505703024000084],\n\t\t\t\t[80.8170097260001, 28.502550761000023],\n\t\t\t\t[80.85798913600013, 28.502447409000084],\n\t\t\t\t[80.87225183100009, 28.496866353000073],\n\t\t\t\t[80.88036503100011, 28.481880189],\n\t\t\t\t[80.88186364800004, 28.46684234700011],\n\t\t\t\t[80.88666955600013, 28.452786357],\n\t\t\t\t[80.90527307200006, 28.44084910100004],\n\t\t\t\t[80.92134444200013, 28.436198222000073],\n\t\t\t\t[80.94118819200014, 28.432684225000045],\n\t\t\t\t[80.9605151780001, 28.432270814000034],\n\t\t\t\t[80.97601810700007, 28.43692169200007],\n\t\t\t\t[80.9878003340001, 28.430978902000064],\n\t\t\t\t[80.99131433200006, 28.420256043000066],\n\t\t\t\t[80.99317468300006, 28.407827861000087],\n\t\t\t\t[81.00040938300003, 28.397001649000046],\n\t\t\t\t[81.04706637000004, 28.389087804],\n\t\t\t\t[81.14634362800007, 28.3722486380001],\n\t\t\t\t[81.16970137600003, 28.361319072000057],\n\t\t\t\t[81.19037194900005, 28.33811635300013],\n\t\t\t\t[81.21073246300006, 28.27863678000007],\n\t\t\t\t[81.22432336400004, 28.25078318300011],\n\t\t\t\t[81.28235599800013, 28.191587830000017],\n\t\t\t\t[81.2959469000001, 28.167454936000055],\n\t\t\t\t[81.2807540280001, 28.161977234000076],\n\t\t\t\t[81.27677494300008, 28.153786520000054],\n\t\t\t\t[81.28307946800004, 28.146086731000068],\n\t\t\t\t[81.29940922000009, 28.1425210580001],\n\t\t\t\t[81.29620528100008, 28.128310038000038],\n\t\t\t\t[81.30705733200006, 28.1238141890001],\n\t\t\t\t[81.32369714400005, 28.12624298100006],\n\t\t\t\t[81.3381148690001, 28.132728373000035],\n\t\t\t\t[81.34726159700006, 28.144433086],\n\t\t\t\t[81.35144738800011, 28.156809591000084],\n\t\t\t\t[81.35790694200006, 28.165982157000073],\n\t\t\t\t[81.37320316600011, 28.167842509000067],\n\t\t\t\t[81.39604414900003, 28.16063364700001],\n\t\t\t\t[81.41733483900009, 28.147016907000122],\n\t\t\t\t[81.43526656100005, 28.12978281600003],\n\t\t\t\t[81.4482373460001, 28.111411845000035],\n\t\t\t\t[81.4529399010001, 28.097045797000035],\n\t\t\t\t[81.45402510600007, 28.086607157000103],\n\t\t\t\t[81.45821089700013, 28.077279562000072],\n\t\t\t\t[81.47345544400014, 28.066401672000026],\n\t\t\t\t[81.56192549700006, 28.025990703000033],\n\t\t\t\t[81.58218265800008, 28.013278300000067],\n\t\t\t\t[81.59510176600008, 27.994881490000083],\n\t\t\t\t[81.59536014800005, 27.994778138000058],\n\t\t\t\t[81.61504886900013, 27.98123891300007],\n\t\t\t\t[81.66543339000003, 27.97080027300005],\n\t\t\t\t[81.6889461670001, 27.96320383700008],\n\t\t\t\t[81.71039188600014, 27.9475200400001],\n\t\t\t\t[81.75013106300014, 27.909667054000025],\n\t\t\t\t[81.80015384900008, 27.88408722000007],\n\t\t\t\t[81.82785241700003, 27.86563873300007],\n\t\t\t\t[81.85565433700009, 27.850936788000055],\n\t\t\t\t[81.88319787600005, 27.84905059900005],\n\t\t\t\t[81.90609053500009, 27.863106588000065],\n\t\t\t\t[81.94639815300013, 27.905352072000042],\n\t\t\t\t[81.97590539600009, 27.91695343000002],\n\t\t\t\t[82.0272200930001, 27.912405904000067],\n\t\t\t\t[82.05021249900011, 27.90558612200006],\n\t\t\t\t[82.05161136900006, 27.90517120300011],\n\t\t\t\t[82.07166182500009, 27.890030009],\n\t\t\t\t[82.09036869300007, 27.87233083100007],\n\t\t\t\t[82.10742191600008, 27.863571675000102],\n\t\t\t\t[82.15103682400007, 27.84827545200004],\n\t\t\t\t[82.27040938300007, 27.760477193],\n\t\t\t\t[82.34792403200004, 27.726009013000024],\n\t\t\t\t[82.40192590400011, 27.67717478400006],\n\t\t\t\t[82.44068322800007, 27.666426086000044],\n\t\t\t\t[82.52615604700009, 27.67521108000004],\n\t\t\t\t[82.65214318800008, 27.704149883000085],\n\t\t\t\t[82.67389143300011, 27.696458430000078],\n\t\t\t\t[82.6796867270001, 27.694408875000036],\n\t\t\t\t[82.69705000800008, 27.669397481000047],\n\t\t\t\t[82.70924564600011, 27.630924377],\n\t\t\t\t[82.71885746300012, 27.556122742000056],\n\t\t\t\t[82.7297095130001, 27.518166402000062],\n\t\t\t\t[82.75213708500007, 27.49496368400004],\n\t\t\t\t[82.87626387600011, 27.487548116000127],\n\t\t\t\t[82.90127526900011, 27.48036509200007],\n\t\t\t\t[82.94716394100004, 27.457317403000033],\n\t\t\t\t[83.01046757100005, 27.443390604000044],\n\t\t\t\t[83.13278568600009, 27.444217428000073],\n\t\t\t\t[83.16963098200011, 27.431194967000025],\n\t\t\t\t[83.2192403570001, 27.393781230000045],\n\t\t\t\t[83.23159102400007, 27.381223856000034],\n\t\t\t\t[83.24311486900007, 27.36215525300007],\n\t\t\t\t[83.2494193930001, 27.348099263000037],\n\t\t\t\t[83.25949629800004, 27.338125713000025],\n\t\t\t\t[83.28244063400007, 27.330942688000093],\n\t\t\t\t[83.30486820500005, 27.33192454100005],\n\t\t\t\t[83.32435022000004, 27.341691386000022],\n\t\t\t\t[83.34114506000003, 27.35693593300006],\n\t\t\t\t[83.3627458090001, 27.38561635400005],\n\t\t\t\t[83.36956709800012, 27.398173726000053],\n\t\t\t\t[83.37096236200011, 27.41021433500002],\n\t\t\t\t[83.35582116800009, 27.42866282200005],\n\t\t\t\t[83.35385746300005, 27.440290019000102],\n\t\t\t\t[83.35592452000003, 27.45248565700011],\n\t\t\t\t[83.36098881100008, 27.462200826000057],\n\t\t\t\t[83.38703373200008, 27.470469056000084],\n\t\t\t\t[83.48098148600008, 27.469745585000098],\n\t\t\t\t[83.59043217000004, 27.456619771000035],\n\t\t\t\t[83.66339929300005, 27.432280172000034],\n\t\t\t\t[83.80199548400003, 27.365927633000084],\n\t\t\t\t[83.84798750900012, 27.35104482000004],\n\t\t\t\t[83.85334011200007, 27.346194023000052],\n\t\t\t\t[83.8546020920001, 27.345050354000122],\n\t\t\t\t[83.86173343900003, 27.354507142000088],\n\t\t\t\t[83.86752120000006, 27.358382873000053],\n\t\t\t\t[83.87739139900003, 27.361741842000058],\n\t\t\t\t[83.87764978000007, 27.36990671900007],\n\t\t\t\t[83.8736706950001, 27.380086975000026],\n\t\t\t\t[83.87119022600012, 27.389440410000063],\n\t\t\t\t[83.8427165120001, 27.418069153000047],\n\t\t\t\t[83.83408654800013, 27.43403717000008],\n\t\t\t\t[83.85351688700013, 27.440961813000072],\n\t\t\t\t[83.89987064700011, 27.44385569200007],\n\t\t\t\t[83.92204311000006, 27.449695761],\n\t\t\t\t[83.92302168800012, 27.449953511000032],\n\t\t\t\t[83.93594079600012, 27.446077780000067],\n\t\t\t\t[83.97583500200005, 27.439721578000032],\n\t\t\t\t[84.00766768400013, 27.440806783000127],\n\t\t\t\t[84.02890669800007, 27.453725891000047],\n\t\t\t\t[84.07960127800004, 27.509536438000012],\n\t\t\t\t[84.0995483800001, 27.51687449100011],\n\t\t\t\t[84.11717004400009, 27.51328297900004],\n\t\t\t\t[84.12156254100006, 27.49496368400004],\n\t\t\t\t[84.1309676510001, 27.486411235000034],\n\t\t\t\t[84.14171634900003, 27.480752666000072],\n\t\t\t\t[84.16574589100009, 27.472174378000048],\n\t\t\t\t[84.17509932500008, 27.46297597300007],\n\t\t\t\t[84.18584802300012, 27.43863637400004],\n\t\t\t\t[84.1952531340001, 27.43605255100003],\n\t\t\t\t[84.22553552300008, 27.440393372000116],\n\t\t\t\t[84.23902307100008, 27.43114329100011],\n\t\t\t\t[84.24889327000005, 27.412436422000027],\n\t\t\t\t[84.26770349200007, 27.388561910000035],\n\t\t\t\t[84.28940759300008, 27.376107890000057],\n\t\t\t\t[84.5770386150001, 27.329030660000072],\n\t\t\t\t[84.60654585800012, 27.310478821000018],\n\t\t\t\t[84.63191898600013, 27.277044169000035],\n\t\t\t\t[84.64819706300005, 27.240715637000065],\n\t\t\t\t[84.65765384900004, 27.203405253000128],\n\t\t\t\t[84.65982426000011, 27.165113017000024],\n\t\t\t\t[84.65439823400004, 27.12537384100004],\n\t\t\t\t[84.64452803500006, 27.103721415000038],\n\t\t\t\t[84.63036869400008, 27.08082875600003],\n\t\t\t\t[84.6214803470001, 27.057987773000022],\n\t\t\t\t[84.62726810700008, 27.036490377000078],\n\t\t\t\t[84.64023889200007, 27.02837717700008],\n\t\t\t\t[84.7606966560001, 26.999024963000082],\n\t\t\t\t[84.77196211800009, 26.999179993000055],\n\t\t\t\t[84.78550134300013, 27.008481751000076],\n\t\t\t\t[84.80193444900004, 27.013752747000083],\n\t\t\t\t[84.81748905400013, 27.01060048400005],\n\t\t\t\t[84.82813440000012, 26.994942526000088],\n\t\t\t\t[84.82828942900005, 26.994839172000056],\n\t\t\t\t[84.85175052900007, 26.982126770000022],\n\t\t\t\t[84.90156661000009, 26.967192281000038],\n\t\t\t\t[84.92404585800011, 26.95566843700003],\n\t\t\t\t[84.93856693500004, 26.936599834000035],\n\t\t\t\t[84.94425134300008, 26.915722554000055],\n\t\t\t\t[84.95272627800011, 26.897635803000057],\n\t\t\t\t[84.97577396700007, 26.886887105000127],\n\t\t\t\t[84.98817631000003, 26.883786520000072],\n\t\t\t\t[85.00083703600006, 26.882236227000064],\n\t\t\t\t[85.01804528800005, 26.874433086000053],\n\t\t\t\t[85.01685673100013, 26.859240214000025],\n\t\t\t\t[85.01856205200005, 26.84580434200008],\n\t\t\t\t[85.0439868580001, 26.843737284],\n\t\t\t\t[85.10021081500008, 26.863529358000093],\n\t\t\t\t[85.12284509300008, 26.865699768000084],\n\t\t\t\t[85.16201582800005, 26.851023662000088],\n\t\t\t\t[85.16552982600012, 26.82079294900008],\n\t\t\t\t[85.16568485500005, 26.786273092],\n\t\t\t\t[85.1949337160001, 26.75888458300004],\n\t\t\t\t[85.28727950000007, 26.736973776000085],\n\t\t\t\t[85.30236901900008, 26.73733551],\n\t\t\t\t[85.33704390500003, 26.746792298000074],\n\t\t\t\t[85.35321862800009, 26.757592672],\n\t\t\t\t[85.35535245800008, 26.759912352000086],\n\t\t\t\t[85.36923832200006, 26.77500762900003],\n\t\t\t\t[85.38587813300006, 26.788443502000078],\n\t\t\t\t[85.4031897380001, 26.787616679000067],\n\t\t\t\t[85.42153487200005, 26.782655742000102],\n\t\t\t\t[85.43962162300011, 26.787720032],\n\t\t\t\t[85.47569177300011, 26.805238343000056],\n\t\t\t\t[85.51946171000009, 26.8264256800001],\n\t\t\t\t[85.59857832800009, 26.854382630000103],\n\t\t\t\t[85.60937870300012, 26.851023662000088],\n\t\t\t\t[85.6877718500001, 26.811852926000043],\n\t\t\t\t[85.70182784000013, 26.7966083780001],\n\t\t\t\t[85.70963098200014, 26.762450256000122],\n\t\t\t\t[85.70224125100003, 26.68844960600002],\n\t\t\t\t[85.71288659700014, 26.65320627900003],\n\t\t\t\t[85.72704593900005, 26.637599996000105],\n\t\t\t\t[85.78099613500012, 26.599204407000073],\n\t\t\t\t[85.7899878340001, 26.597033997000082],\n\t\t\t\t[85.80006473800012, 26.600703023000065],\n\t\t\t\t[85.80972823100007, 26.603028463],\n\t\t\t\t[85.81763472500006, 26.596723938000096],\n\t\t\t\t[85.81954675300011, 26.588300680000103],\n\t\t\t\t[85.81975345900008, 26.579515687000097],\n\t\t\t\t[85.82161381000009, 26.571712545000096],\n\t\t\t\t[85.82853845200003, 26.566131490000075],\n\t\t\t\t[85.84476485200008, 26.568508606000123],\n\t\t\t\t[85.86636560100004, 26.579929098000022],\n\t\t\t\t[85.93468184400007, 26.632897441000026],\n\t\t\t\t[85.95214847900013, 26.6420441690001],\n\t\t\t\t[85.97571293100003, 26.644369609000037],\n\t\t\t\t[86.01136967000014, 26.65444651300008],\n\t\t\t\t[86.04170373500006, 26.645454814000047],\n\t\t\t\t[86.11069177300004, 26.60674916600003],\n\t\t\t\t[86.11585941500005, 26.602563375000088],\n\t\t\t\t[86.12206058800012, 26.600289612000054],\n\t\t\t\t[86.14479821800006, 26.601529847000094],\n\t\t\t\t[86.14635461800009, 26.60135577600009],\n\t\t\t\t[86.15265303600012, 26.600651347000067],\n\t\t\t\t[86.16779423000014, 26.596620585000053],\n\t\t\t\t[86.17446049000006, 26.593313293000065],\n\t\t\t\t[86.17926639900003, 26.58861073800007],\n\t\t\t\t[86.18536421800007, 26.584424947000045],\n\t\t\t\t[86.19585453300004, 26.582667949000083],\n\t\t\t\t[86.20288252800009, 26.584579977000075],\n\t\t\t\t[86.22515507100013, 26.597395732000066],\n\t\t\t\t[86.26308557100003, 26.60907460600005],\n\t\t\t\t[86.28442793800014, 26.612020162000036],\n\t\t\t\t[86.30137780800004, 26.609022930000023],\n\t\t\t\t[86.30861250800007, 26.60214996300006],\n\t\t\t\t[86.30902592000012, 26.58799062200002],\n\t\t\t\t[86.31600223800012, 26.58096262700009],\n\t\t\t\t[86.32318526200004, 26.580084127000063],\n\t\t\t\t[86.34483768800004, 26.582616272000067],\n\t\t\t\t[86.35367435800003, 26.582616272000067],\n\t\t\t\t[86.38364668800006, 26.572849427],\n\t\t\t\t[86.4448315840001, 26.543083802000112],\n\t\t\t\t[86.47547570800003, 26.531973368000095],\n\t\t\t\t[86.4949060460001, 26.527839254000085],\n\t\t\t\t[86.5106156820001, 26.52013946600009],\n\t\t\t\t[86.52430993700011, 26.509080709000088],\n\t\t\t\t[86.53774580900006, 26.4948696900001],\n\t\t\t\t[86.53795251500003, 26.4948696900001],\n\t\t\t\t[86.55789961800014, 26.484017639000072],\n\t\t\t\t[86.62533736100005, 26.45631907100004],\n\t\t\t\t[86.69520389800005, 26.418233541000077],\n\t\t\t\t[86.71360070900005, 26.414564515000095],\n\t\t\t\t[86.72409102400007, 26.421954244000105],\n\t\t\t\t[86.73070560700006, 26.43378814800012],\n\t\t\t\t[86.7381986900001, 26.44371002200002],\n\t\t\t\t[86.75189294500012, 26.44551869700011],\n\t\t\t\t[86.78723962400005, 26.43306467700002],\n\t\t\t\t[86.79643802900006, 26.431514384000096],\n\t\t\t\t[86.82186283400006, 26.438128967000083],\n\t\t\t\t[86.84635746300012, 26.452650045000055],\n\t\t\t\t[86.86568444800014, 26.472442119000036],\n\t\t\t\t[86.87596805800007, 26.494921367000032],\n\t\t\t\t[86.9071289470001, 26.51150950100005],\n\t\t\t\t[86.93515347300013, 26.520289336000033],\n\t\t\t\t[86.97244795800009, 26.531973368000095],\n\t\t\t\t[86.98521203600012, 26.540655009000048],\n\t\t\t\t[87.01544274900004, 26.568973694000064],\n\t\t\t\t[87.02991215000009, 26.579774068000077],\n\t\t\t\t[87.04133264100005, 26.580187480000106],\n\t\t\t\t[87.04443322800012, 26.561170553000025],\n\t\t\t\t[87.04500166800005, 26.544272359000033],\n\t\t\t\t[87.05647383700011, 26.494921367000032],\n\t\t\t\t[87.05668054200004, 26.4948696900001],\n\t\t\t\t[87.06670577000006, 26.46562082900006],\n\t\t\t\t[87.08329390500006, 26.43208282500005],\n\t\t\t\t[87.10628991700014, 26.40474599300002],\n\t\t\t\t[87.13502201400013, 26.394204],\n\t\t\t\t[87.18845544500005, 26.399578349000123],\n\t\t\t\t[87.2190995690001, 26.408104960000045],\n\t\t\t\t[87.22943485500008, 26.398751526000083],\n\t\t\t\t[87.23630782100014, 26.383300273000103],\n\t\t\t\t[87.24529952000012, 26.370226136000056],\n\t\t\t\t[87.25842533400004, 26.36293975800008],\n\t\t\t\t[87.3004899500001, 26.345989888000062],\n\t\t\t\t[87.31402917500009, 26.343767802000073],\n\t\t\t\t[87.32622481300007, 26.353327942000064],\n\t\t\t\t[87.3449316820001, 26.389346416000038],\n\t\t\t\t[87.35640384900006, 26.403712464000037],\n\t\t\t\t[87.38420577000005, 26.418646953000106],\n\t\t\t\t[87.41645186400012, 26.426966858000057],\n\t\t\t\t[87.44962813400014, 26.428620504000023],\n\t\t\t\t[87.48032393400007, 26.423401185],\n\t\t\t\t[87.55205082300006, 26.38671091700003],\n\t\t\t\t[87.58698409000004, 26.378029277000067],\n\t\t\t\t[87.6239844160001, 26.392912089],\n\t\t\t\t[87.64874495200013, 26.40999327100006],\n\t\t\t\t[87.6596411540001, 26.417510071],\n\t\t\t\t[87.68119022600013, 26.424228007000025],\n\t\t\t\t[87.6975716550001, 26.41626983700006],\n\t\t\t\t[87.71090417500011, 26.405676168000085],\n\t\t\t\t[87.72754398600011, 26.403764140000064],\n\t\t\t\t[87.74222009300013, 26.410482076000093],\n\t\t\t\t[87.7494547930001, 26.425726624000035],\n\t\t\t\t[87.75617273000012, 26.446913961000078],\n\t\t\t\t[87.76898848500008, 26.451461487000117],\n\t\t\t\t[87.78593835400011, 26.445983785000024],\n\t\t\t\t[87.80443851800004, 26.437353821000087],\n\t\t\t\t[87.8215950930001, 26.437508851000032],\n\t\t\t\t[87.85208418800005, 26.460659892000123],\n\t\t\t\t[87.86980920500008, 26.464638978],\n\t\t\t\t[87.87068770400003, 26.460711569000026],\n\t\t\t\t[87.89476892100004, 26.442934876000024],\n\t\t\t\t[87.89730106600007, 26.44345164000005],\n\t\t\t\t[87.90200362200005, 26.43528676300012],\n\t\t\t\t[87.90851485200011, 26.417820130000067],\n\t\t\t\t[87.91476770100007, 26.408259990000076],\n\t\t\t\t[87.92897871900004, 26.396426086000062],\n\t\t\t\t[87.96122481300011, 26.378959453000036],\n\t\t\t\t[87.97548750900012, 26.366557108000066],\n\t\t\t\t[88.00664839700005, 26.369864400000054],\n\t\t\t\t[88.04432051600008, 26.405676168000085],\n\t\t\t\t[88.07418949400011, 26.453941955000104],\n\t\t\t\t[88.08225101700009, 26.4948696900001],\n\t\t\t\t[88.07915043200006, 26.507375387000096],\n\t\t\t\t[88.07982222500004, 26.51755564400007],\n\t\t\t\t[88.08713624100011, 26.539100004000105],\n\t\t\t\t[88.10168135600009, 26.581944479000086],\n\t\t\t\t[88.14663985200008, 26.661216126000014],\n\t\t\t\t[88.16338301600007, 26.70514109300005],\n\t\t\t\t[88.16751713100007, 26.725036519000057],\n\t\t\t\t[88.1690674240001, 26.74400177000011],\n\t\t\t\t[88.16782718900004, 26.762915344000035],\n\t\t\t\t[88.15904219600009, 26.802551169000097],\n\t\t\t\t[88.15532149300003, 26.845597636000022],\n\t\t\t\t[88.15139408400006, 26.862805888000096],\n\t\t\t\t[88.14281579600004, 26.878412170000033],\n\t\t\t\t[88.12043990100005, 26.9088495890001],\n\t\t\t\t[88.11180993700003, 26.924300842],\n\t\t\t\t[88.09682377100006, 26.95933746400003],\n\t\t\t\t[88.07687666900006, 26.991790263000027],\n\t\t\t\t[88.05594771400007, 27.018041891000067],\n\t\t\t\t[88.04282190000009, 27.028945618000122],\n\t\t\t\t[88.02737064700011, 27.03535349500008],\n\t\t\t\t[88.00949060100004, 27.04563710500007],\n\t\t\t\t[87.99130049700011, 27.08150055],\n\t\t\t\t[87.97548750900012, 27.095143128000117],\n\t\t\t\t[87.97073327700008, 27.10273956300007],\n\t\t\t\t[87.96918298300005, 27.11080108700007],\n\t\t\t\t[87.97083663000012, 27.119224345000063],\n\t\t\t\t[87.9854610590001, 27.148369853000062],\n\t\t\t\t[87.98933679200007, 27.2183914190001],\n\t\t\t\t[88.0046627590001, 27.249163088],\n\t\t\t\t[88.02902429200003, 27.298076477000066],\n\t\t\t\t[88.03512211100008, 27.322571106000012],\n\t\t\t\t[88.0325382900001, 27.333888245000068],\n\t\t\t\t[88.02013594600004, 27.353370260000062],\n\t\t\t\t[88.01579512500007, 27.364222311000034],\n\t\t\t\t[88.01476159700007, 27.378071594000076],\n\t\t\t\t[88.01724206500006, 27.389233704000034],\n\t\t\t\t[88.02582035300009, 27.412074686000025],\n\t\t\t\t[88.02959273300007, 27.418740947000046],\n\t\t\t\t[88.03481205300011, 27.42380523700011],\n\t\t\t\t[88.03930790200013, 27.42948964400007],\n\t\t\t\t[88.04163334200007, 27.438067933000085],\n\t\t\t\t[88.03977299000007, 27.442357077000068],\n\t\t\t\t[88.03078129100004, 27.450728659000035],\n\t\t\t\t[88.02809411600009, 27.45512115500013],\n\t\t\t\t[88.02333988400011, 27.474654847000025],\n\t\t\t\t[88.02209965000009, 27.48424082500013],\n\t\t\t\t[88.02333988400011, 27.494912008000128],\n\t\t\t\t[88.04876468900011, 27.545348206000043],\n\t\t\t\t[88.11087976100009, 27.639502666000013],\n\t\t\t\t[88.1348576260001, 27.723166809000062],\n\t\t\t\t[88.14932702700014, 27.748772482],\n\t\t\t\t[88.15966231300013, 27.774119772000105],\n\t\t\t\t[88.15459802200007, 27.815150859000042],\n\t\t\t\t[88.16658695500013, 27.83359934600007],\n\t\t\t\t[88.16462325100008, 27.84535573400005],\n\t\t\t\t[88.15640669800007, 27.85127268500007],\n\t\t\t\t[88.14302250200012, 27.855716858000065],\n\t\t\t\t[88.11821781400005, 27.860884501000058],\n\t\t\t\t[88.10488529500003, 27.8797205610001],\n\t\t\t\t[88.09749556500003, 27.904008484000073],\n\t\t\t\t[88.09992435700008, 27.928322246000093],\n\t\t\t\t[88.11573734600012, 27.947261658000045],\n\t\t\t\t[88.12669274900009, 27.950439759000105],\n\t\t\t\t[88.15118737800003, 27.947209982000018],\n\t\t\t\t[88.16296960500006, 27.946899923000032],\n\t\t\t\t[88.17485518400008, 27.94976796500002],\n\t\t\t\t[88.19785119700003, 27.95829457600003],\n\t\t\t\t[88.37877038600004, 27.982634176000047],\n\t\t\t\t[88.39975101800007, 27.99472646100004],\n\t\t\t\t[88.39985437100012, 27.99472646100004],\n\t\t\t\t[88.39990604700012, 27.994881490000083],\n\t\t\t\t[88.45576827000008, 28.03152008100004],\n\t\t\t\t[88.47540531400011, 28.036248474000033],\n\t\t\t\t[88.50207035300008, 28.02888458300002],\n\t\t\t\t[88.5171598720001, 28.039581604000105],\n\t\t\t\t[88.53080245000007, 28.0590119430001],\n\t\t\t\t[88.55281660900005, 28.078054708000067],\n\t\t\t\t[88.59400272600004, 28.106605937000026],\n\t\t\t\t[88.61048750800012, 28.105830790000127],\n\t\t\t\t[88.63167484600007, 28.083351542000017],\n\t\t\t\t[88.65203536000013, 28.069398906000018],\n\t\t\t\t[88.7101196700001, 28.061983337000115],\n\t\t\t\t[88.73564782700004, 28.055265402000074],\n\t\t\t\t[88.78014123500003, 28.028341980000064],\n\t\t\t\t[88.80293054200013, 28.011004537000062],\n\t\t\t\t[88.8175032960001, 27.994881490000083],\n\t\t\t\t[88.81771000200013, 27.994881490000083],\n\t\t\t\t[88.81771000200013, 27.99472646100004],\n\t\t\t\t[88.81967370600006, 27.977337342000013],\n\t\t\t\t[88.80975183200007, 27.9444969690001],\n\t\t\t\t[88.81068200700014, 27.927857158000066],\n\t\t\t\t[88.81889856000004, 27.91519643200003],\n\t\t\t\t[88.84277307100012, 27.892407125000133],\n\t\t\t\t[88.85155806500012, 27.877162577],\n\t\t\t\t[88.85507206300008, 27.859179179000094],\n\t\t\t\t[88.85388350400007, 27.843676249000097],\n\t\t\t\t[88.80566939300007, 27.655108948000063],\n\t\t\t\t[88.78308679200012, 27.622036031000064],\n\t\t\t\t[88.76737715600007, 27.586198425000035],\n\t\t\t\t[88.74815352400003, 27.560127666000042],\n\t\t\t\t[88.7410221770001, 27.545709941000027],\n\t\t\t\t[88.74164229300004, 27.531679789000023],\n\t\t\t\t[88.75755863400008, 27.511448466000033],\n\t\t\t\t[88.75719689900006, 27.49496368400004],\n\t\t\t\t[88.75435469600012, 27.464216207000092],\n\t\t\t\t[88.75978072200007, 27.435070699000065],\n\t\t\t\t[88.77357832900003, 27.408509013000057],\n\t\t\t\t[88.79538578300009, 27.385926412000018],\n\t\t\t\t[88.80820153800005, 27.378381653000062],\n\t\t\t\t[88.8198287350001, 27.37362742200007],\n\t\t\t\t[88.8308358160001, 27.36732289600006],\n\t\t\t\t[88.85202315300006, 27.342363180000078],\n\t\t\t\t[88.86463220200005, 27.332389628000087],\n\t\t\t\t[88.89233077000011, 27.315543111000082],\n\t\t\t\t[88.88463098200003, 27.286345927000056],\n\t\t\t\t[88.87611560500005, 27.28048567900005],\n\t\t\t\t[88.86142826300011, 27.270377910000022],\n\t\t\t\t[88.80117354300006, 27.256425273000033],\n\t\t\t\t[88.77585209100005, 27.240870667000095],\n\t\t\t\t[88.75435469600012, 27.21260365800002],\n\t\t\t\t[88.7384383540001, 27.17978912300002],\n\t\t\t\t[88.73006677200004, 27.150953674000064],\n\t\t\t\t[88.73308231500005, 27.148972387000114],\n\t\t\t\t[88.74257246900004, 27.142737122000042],\n\t\t\t\t[88.80525598100013, 27.11302317300006],\n\t\t\t\t[88.82763187700004, 27.097881979000064],\n\t\t\t\t[88.84080936700008, 27.075247701000094],\n\t\t\t\t[88.84561527500011, 27.04956451400004],\n\t\t\t\t[88.84561527500011, 26.994942526000088],\n\t\t\t\t[88.84561527500011, 26.994839172000056],\n\t\t\t\t[88.85171309400005, 26.94543650400003],\n\t\t\t\t[88.86711267100003, 26.964246725000052],\n\t\t\t\t[88.8864396570001, 26.978974508000064],\n\t\t\t\t[88.90664514100007, 26.98109324200003],\n\t\t\t\t[88.92447351100003, 26.96166290300006],\n\t\t\t\t[88.92695398000012, 26.94941558800012],\n\t\t\t\t[88.9254036860001, 26.939028626],\n\t\t\t\t[88.92530033400004, 26.929365133000076],\n\t\t\t\t[88.9323283280001, 26.9192365520001],\n\t\t\t\t[88.94276696800011, 26.913707174000123],\n\t\t\t\t[88.95454919500008, 26.91262196900003],\n\t\t\t\t[88.96581465700007, 26.915464173000103],\n\t\t\t\t[88.97532312000004, 26.921717021000077],\n\t\t\t\t[88.99661381100003, 26.92275054900007],\n\t\t\t\t[89.02157352700004, 26.912673645000027],\n\t\t\t\t[89.04487959900007, 26.897119039000117],\n\t\t\t\t[89.06069258700006, 26.88146108000005],\n\t\t\t\t[89.07433516500004, 26.856398010000035],\n\t\t\t\t[89.08244836400007, 26.836037496000117],\n\t\t\t\t[89.0965043540001, 26.821413066000034],\n\t\t\t\t[89.12807865500008, 26.813454895000078],\n\t\t\t\t[89.18461267100014, 26.81056101500009],\n\t\t\t\t[89.21282800300008, 26.813041484000067],\n\t\t\t\t[89.24083662900011, 26.819759420000096],\n\t\t\t\t[89.25261885600008, 26.826787415000084],\n\t\t\t\t[89.26295414200013, 26.836347555000103],\n\t\t\t\t[89.27359948700007, 26.84389231400006],\n\t\t\t\t[89.28636356600009, 26.84497751900004],\n\t\t\t\t[89.3001611730001, 26.844409078000083],\n\t\t\t\t[89.34165734900012, 26.854330953000087],\n\t\t\t\t[89.36889455700003, 26.837358593000076],\n\t\t\t\t[89.40733809400012, 26.81340321900005],\n\t\t\t\t[89.44289148000007, 26.797021789000027],\n\t\t\t\t[89.50541996200008, 26.80368804900003],\n\t\t\t\t[89.54650272600003, 26.79753855400004],\n\t\t\t\t[89.5860868740001, 26.784051005],\n\t\t\t\t[89.61135664900007, 26.76596425400008],\n\t\t\t\t[89.61347538300004, 26.748549296000036],\n\t\t\t\t[89.59750736500013, 26.720954081000045],\n\t\t\t\t[89.60980635600004, 26.712220765000083],\n\t\t\t\t[89.6283065180001, 26.71253082300005],\n\t\t\t\t[89.66323978700007, 26.725501607000083],\n\t\t\t\t[89.68515059500004, 26.72457143100003],\n\t\t\t\t[89.73873905400006, 26.703280742000047],\n\t\t\t\t[89.75466966300013, 26.700988568000113],\n\t\t\t\t[89.76028812700014, 26.700180156],\n\t\t\t\t[89.80007898000014, 26.700490214000084],\n\t\t\t\t[89.80405806500005, 26.699766744000087],\n\t\t\t\t[89.81366988200006, 26.696149394000102],\n\t\t\t\t[89.81728723200013, 26.6962010700001],\n\t\t\t\t[89.82209314000005, 26.70100697900004],\n\t\t\t\t[89.82524540200006, 26.70767323900013],\n\t\t\t\t[89.8267956950001, 26.71351267500002],\n\t\t\t\t[89.8267440190001, 26.715683085000094],\n\t\t\t\t[89.82726078300004, 26.7179051720001],\n\t\t\t\t[89.82767419500004, 26.722452698000055],\n\t\t\t\t[89.82974125100003, 26.727620341000048],\n\t\t\t\t[89.83496057100012, 26.73154775000002],\n\t\t\t\t[89.83904301000013, 26.731237691000032],\n\t\t\t\t[89.84700118000012, 26.724829814000103],\n\t\t\t\t[89.85077355900012, 26.72317616800005],\n\t\t\t\t[89.85870063400006, 26.722056524000052],\n\t\t\t\t[89.85992028800013, 26.7218842570001],\n\t\t\t\t[89.88028080200013, 26.71625152600008],\n\t\t\t\t[89.89040938400007, 26.714856262000083],\n\t\t\t\t[89.91211348500008, 26.716716614000077],\n\t\t\t\t[89.97526208500005, 26.73185780900009],\n\t\t\t\t[90.0891569420001, 26.741728008000095],\n\t\t\t\t[90.12719079600004, 26.75139150000011],\n\t\t\t\t[90.15220218900004, 26.771752014000057],\n\t\t\t\t[90.17742028900005, 26.832058410000045],\n\t\t\t\t[90.21090661700009, 26.85148875000003],\n\t\t\t\t[90.22914839700013, 26.852884013000093],\n\t\t\t\t[90.26599369300004, 26.851592103000044],\n\t\t\t\t[90.28444218000004, 26.857069804000034],\n\t\t\t\t[90.30087528500013, 26.868283590000075],\n\t\t\t\t[90.31420780500014, 26.88037587500007],\n\t\t\t\t[90.32857385300014, 26.890659485000057],\n\t\t\t\t[90.34883101400004, 26.89665395100009],\n\t\t\t\t[90.38262740100004, 26.891796367000055],\n\t\t\t\t[90.4752315670001, 26.832420146000047],\n\t\t\t\t[90.58778283800007, 26.78007192000011],\n\t\t\t\t[90.71707727100011, 26.767049459000063],\n\t\t\t\t[90.94449258000003, 26.778869550000096],\n\t\t\t\t[91.00739546800008, 26.78213897700006],\n\t\t\t\t[91.01278080700007, 26.784348086000065],\n\t\t\t\t[91.06206913300014, 26.804566549000057],\n\t\t\t\t[91.09193811100005, 26.80477325500003],\n\t\t\t\t[91.12707808500011, 26.800897522000056],\n\t\t\t\t[91.19818485600013, 26.80234446200005],\n\t\t\t\t[91.23249800600013, 26.795161438000022],\n\t\t\t\t[91.26195357300003, 26.779038392000032],\n\t\t\t\t[91.27600956200007, 26.77407745400008],\n\t\t\t\t[91.29657678200005, 26.77459421800002],\n\t\t\t\t[91.31321659300005, 26.77867665700002],\n\t\t\t\t[91.33006311000014, 26.785497945000074],\n\t\t\t\t[91.34556604000005, 26.79469635000008],\n\t\t\t\t[91.35838179600006, 26.806168519],\n\t\t\t\t[91.37006066900011, 26.824668681000034],\n\t\t\t\t[91.37812219300008, 26.84280710800006],\n\t\t\t\t[91.38845747900012, 26.858465068],\n\t\t\t\t[91.4063375240001, 26.869523824000012],\n\t\t\t\t[91.42018680900003, 26.871539205000047],\n\t\t\t\t[91.46059777800014, 26.869368795000057],\n\t\t\t\t[91.47506717900006, 26.86554473900013],\n\t\t\t\t[91.4844722900001, 26.852728984000052],\n\t\t\t\t[91.50741662600007, 26.80802887],\n\t\t\t\t[91.52064579300003, 26.79759023000007],\n\t\t\t\t[91.53935266200011, 26.798830465000023],\n\t\t\t\t[91.5756295170001, 26.81014760300009],\n\t\t\t\t[91.5937162680001, 26.81076772100006],\n\t\t\t\t[91.63795129500011, 26.798985494000036],\n\t\t\t\t[91.6537642830001, 26.797951965000053],\n\t\t\t\t[91.70213342300013, 26.803481344000076],\n\t\t\t\t[91.73158898900004, 26.816193746000025],\n\t\t\t\t[91.79525435400006, 26.853504131000065],\n\t\t\t\t[91.82512333200009, 26.858465068],\n\t\t\t\t[91.84393355300006, 26.849370015000133],\n\t\t\t\t[91.8495146080001, 26.834745586000068],\n\t\t\t\t[91.8524084880001, 26.818519185000056],\n\t\t\t\t[91.8630538330001, 26.80477325500003],\n\t\t\t\t[91.8786601160001, 26.80301625600005],\n\t\t\t\t[91.88692834500006, 26.814436747000045],\n\t\t\t\t[91.88589481600008, 26.830869853000095],\n\t\t\t\t[91.87400923700005, 26.84430572500007],\n\t\t\t\t[91.89550663300008, 26.853504131000065],\n\t\t\t\t[91.89550663300008, 26.868283590000075],\n\t\t\t\t[91.89312951700003, 26.881357727000122],\n\t\t\t\t[91.90821903500006, 26.885181784000068],\n\t\t\t\t[91.92568566900007, 26.878670553000106],\n\t\t\t\t[91.9574149980001, 26.85427927700006],\n\t\t\t\t[91.97508833800003, 26.84663116500009],\n\t\t\t\t[92.03585982200013, 26.85484771800013],\n\t\t\t\t[92.07275679500003, 26.88776560500007],\n\t\t\t\t[92.08037091600005, 26.921570891000087],\n\t\t\t\t[92.08391890500008, 26.937323303000127],\n\t\t\t\t[92.06696903500006, 26.994839172000056],\n\t\t\t\t[92.06696903500006, 26.994942526000088],\n\t\t\t\t[92.04970910700007, 27.026826885000062],\n\t\t\t\t[91.99989302600005, 27.071526998000095],\n\t\t\t\t[91.98769738800013, 27.104031474000024],\n\t\t\t\t[91.9879040940001, 27.122273255],\n\t\t\t\t[91.99079797400009, 27.140773418000023],\n\t\t\t\t[91.99586226400004, 27.158033346000096],\n\t\t\t\t[92.00299361200007, 27.172606100000067],\n\t\t\t\t[92.00578806200014, 27.1761123430001],\n\t\t\t\t[92.00847131400008, 27.179479065000024],\n\t\t\t\t[92.02149377500012, 27.19182973300009],\n\t\t\t\t[92.02707482900013, 27.199839580000074],\n\t\t\t\t[92.02996871000005, 27.208469544000096],\n\t\t\t\t[92.03317264800012, 27.227434794000047],\n\t\t\t\t[92.03678999800007, 27.236478170000012],\n\t\t\t\t[92.05063928300012, 27.25141265900008],\n\t\t\t\t[92.08185184800004, 27.2751321410001],\n\t\t\t\t[92.08877648900011, 27.292340394000078],\n\t\t\t\t[92.08484908100013, 27.30422597300013],\n\t\t\t\t[92.02359761663678, 27.446779847112282],\n\t\t\t\t[91.97508833800003, 27.472432760000018],\n\t\t\t\t[91.96330611200011, 27.468918763000076],\n\t\t\t\t[91.90059085495413, 27.459729852655357],\n\t\t\t\t[91.8565776472989, 27.46623873822671],\n\t\t\t\t[91.8162322069483, 27.4613571100768],\n\t\t\t\t[91.77955453390229, 27.45647526576099],\n\t\t\t\t[91.72709172100008, 27.45994159900009],\n\t\t\t\t[91.72704146300003, 27.46000457700005],\n\t\t\t\t[91.70492395000008, 27.468763733000046],\n\t\t\t\t[91.6802226160001, 27.47284617100003],\n\t\t\t\t[91.65738163300011, 27.479150696000048],\n\t\t\t\t[91.6416719980001, 27.49496368400004],\n\t\t\t\t[91.63288700400005, 27.51165517200009],\n\t\t\t\t[91.60446496600008, 27.53214487700005],\n\t\t\t\t[91.59505985500004, 27.54638173400012],\n\t\t\t\t[91.57325240100005, 27.619710592000033],\n\t\t\t\t[91.57986698400003, 27.65797699000005],\n\t\t\t\t[91.62668583200013, 27.716423035000034],\n\t\t\t\t[91.6349570594208, 27.746570816190285],\n\t\t\t\t[91.63576961127859, 27.78252481766623],\n\t\t\t\t[91.60533558693375, 27.810658168996827],\n\t\t\t\t[91.5660232169979, 27.821073950502466],\n\t\t\t\t[91.56435452404213, 27.85137236654151],\n\t\t\t\t[91.6283394780001, 27.852693787000035],\n\t\t\t\t[91.68013149075769, 27.849823277598603],\n\t\t\t\t[91.72987134422583, 27.804136158001306],\n\t\t\t\t[91.82658872441321, 27.807627271770244],\n\t\t\t\t[91.85637335954294, 27.764539482011514],\n\t\t\t\t[91.86491418500009, 27.72998809800002],\n\t\t\t\t[91.90873579900006, 27.731900126000127],\n\t\t\t\t[91.95224735500011, 27.724820455],\n\t\t\t\t[91.96800093766346, 27.746278233869482],\n\t\t\t\t[91.98889765320416, 27.76939841380579],\n\t\t\t\t[92.06487820550117, 27.76172129397611],\n\t\t\t\t[92.10615954418942, 27.786080717238843],\n\t\t\t\t[92.1262935790001, 27.81272206600009],\n\t\t\t\t[92.23956831900006, 27.865276998000056],\n\t\t\t\t[92.24918013500007, 27.862641500000038],\n\t\t\t\t[92.25827518700004, 27.848197937000023],\n\t\t\t\t[92.27522505700006, 27.81168853700011],\n\t\t\t\t[92.28876428200005, 27.793085022000056],\n\t\t\t\t[92.30385380100006, 27.786160380000055],\n\t\t\t\t[92.31728967300006, 27.80367869100003],\n\t\t\t\t[92.32917525300013, 27.832927552000072],\n\t\t\t\t[92.33465295400003, 27.83127390600002],\n\t\t\t\t[92.33982059800013, 27.815564270000053],\n\t\t\t\t[92.35005253100007, 27.802541809000033],\n\t\t\t\t[92.36793257700003, 27.80383372000007],\n\t\t\t\t[92.37558068800013, 27.821119487000075],\n\t\t\t\t[92.38105839100012, 27.842461853000074],\n\t\t\t\t[92.39284061800004, 27.85602691700005],\n\t\t\t\t[92.40441613800004, 27.85383066900006],\n\t\t\t\t[92.41733524600005, 27.828948466],\n\t\t\t\t[92.42756717900005, 27.82117116400009],\n\t\t\t\t[92.43903934800005, 27.823289897000066],\n\t\t\t\t[92.47510949800005, 27.846595968000074],\n\t\t\t\t[92.51815087726021, 27.839468002981643],\n\t\t\t\t[92.57497681769904, 27.847806414432647],\n\t\t\t\t[92.59291178341888, 27.868193283595886],\n\t\t\t\t[92.63646812873851, 27.89536981004999],\n\t\t\t\t[92.68367428669768, 27.910450219011963],\n\t\t\t\t[92.71077012957788, 27.949702392409918],\n\t\t\t\t[92.73639150917766, 27.98590893651867],\n\t\t\t\t[92.70134891800006, 28.025241394000133],\n\t\t\t\t[92.70134891800006, 28.037824606000058],\n\t\t\t\t[92.68925663200014, 28.048314921],\n\t\t\t\t[92.65422001100012, 28.052087301000128],\n\t\t\t\t[92.63892378800006, 28.057487488000092],\n\t\t\t\t[92.63727014200003, 28.071982728000123],\n\t\t\t\t[92.65484012900009, 28.105830790000127],\n\t\t\t\t[92.67861128800007, 28.133064270000105],\n\t\t\t\t[92.70786014900011, 28.155414328000106],\n\t\t\t\t[92.7700785720001, 28.192182108000097],\n\t\t\t\t[92.77917362500011, 28.195902812],\n\t\t\t\t[92.78289432800011, 28.190941874000046],\n\t\t\t\t[92.78537479700009, 28.183293762000076],\n\t\t\t\t[92.79023238100007, 28.178901266000068],\n\t\t\t\t[92.80532190000008, 28.17802276700003],\n\t\t\t\t[92.81989465400005, 28.17926300100008],\n\t\t\t\t[92.8347774660001, 28.183526306000132],\n\t\t\t\t[92.85028039600013, 28.19194956500003],\n\t\t\t\t[92.8653699140001, 28.20520457000002],\n\t\t\t\t[92.88955448400009, 28.23582285600004],\n\t\t\t\t[92.90381717900004, 28.2496979780001],\n\t\t\t\t[92.92200728300008, 28.25863800100005],\n\t\t\t\t[92.96035119600003, 28.270213521000088],\n\t\t\t\t[92.97492395000006, 28.28230580700007],\n\t\t\t\t[93.04639880818196, 28.302097099545048],\n\t\t\t\t[93.12982812476821, 28.325961566073488],\n\t\t\t\t[93.20782489381371, 28.340539283245555],\n\t\t\t\t[93.21807344565363, 28.39464655767386],\n\t\t\t\t[93.1862858334245, 28.431995228097378],\n\t\t\t\t[93.21883846222534, 28.457435846387227],\n\t\t\t\t[93.25906765301328, 28.496023260000364],\n\t\t\t\t[93.2869721652333, 28.520517242676647],\n\t\t\t\t[93.30284340070244, 28.556921073348917],\n\t\t\t\t[93.31717003715039, 28.603462550497838],\n\t\t\t\t[93.35543239724171, 28.624065359777703],\n\t\t\t\t[93.44621301300003, 28.671894430000023],\n\t\t\t\t[93.55173628800009, 28.67894826200005],\n\t\t\t\t[93.60713342300005, 28.672204488000105],\n\t\t\t\t[93.62553023300006, 28.67235951800005],\n\t\t\t\t[93.64341027900008, 28.680240174000105],\n\t\t\t\t[93.66490848182954, 28.690238755807428],\n\t\t\t\t[93.70552535000007, 28.69189320900007],\n\t\t\t\t[93.72247522000009, 28.696647441000053],\n\t\t\t\t[93.78174379684887, 28.68050383781251],\n\t\t\t\t[93.86307969177443, 28.704870831024095],\n\t\t\t\t[93.92778566056765, 28.68275160171495],\n\t\t\t\t[93.96109345404737, 28.72994349590268],\n\t\t\t\t[93.9815905577272, 28.768130860141966],\n\t\t\t\t[93.99313607399837, 28.80188742309345],\n\t\t\t\t[93.99201949100012, 28.844648743000064],\n\t\t\t\t[94.01144982900013, 28.85302032500003],\n\t\t\t\t[94.02684940600011, 28.864182435000075],\n\t\t\t\t[94.07947398050715, 28.883072105010925],\n\t\t\t\t[94.1353958914097, 28.897788397353693],\n\t\t\t\t[94.17365825150097, 28.930164240507835],\n\t\t\t\t[94.2501829716835, 28.933107498976327],\n\t\t\t\t[94.29138859024334, 28.977256376004746],\n\t\t\t\t[94.34731050114596, 29.024348511501685],\n\t\t\t\t[94.30904814105469, 29.059667613124404],\n\t\t\t\t[94.27078578096348, 29.097929973215642],\n\t\t\t\t[94.28750533100003, 29.147937724000073],\n\t\t\t\t[94.32378218600007, 29.146025696000052],\n\t\t\t\t[94.33577111900013, 29.149617208000038],\n\t\t\t\t[94.34631311100009, 29.1590739950001],\n\t\t\t\t[94.36253951000009, 29.185325623000026],\n\t\t\t\t[94.37287479700012, 29.19630686500001],\n\t\t\t\t[94.39643925000013, 29.207081400000035],\n\t\t\t\t[94.42238081900007, 29.210492045000066],\n\t\t\t\t[94.47498742700003, 29.210802104000052],\n\t\t\t\t[94.49824182200007, 29.21522043900005],\n\t\t\t\t[94.51477828000009, 29.22105987600004],\n\t\t\t\t[94.52862756400003, 29.2312401330001],\n\t\t\t\t[94.5826811120001, 29.302915345000073],\n\t\t\t\t[94.59994104000009, 29.316635437000016],\n\t\t\t\t[94.6304301350001, 29.319451803000064],\n\t\t\t\t[94.66846399000013, 29.306610209000084],\n\t\t\t\t[94.70422408000013, 29.284699402000044],\n\t\t\t\t[94.75641727800013, 29.230516663000017],\n\t\t\t\t[94.76768273900007, 29.21385101300008],\n\t\t\t\t[94.76148156800008, 29.174706116000053],\n\t\t\t\t[94.77657108500011, 29.16669626900007],\n\t\t\t\t[94.79879195200004, 29.1664378870001],\n\t\t\t\t[94.81543176300005, 29.16886667900006],\n\t\t\t\t[94.85408573500007, 29.17000356000007],\n\t\t\t\t[94.89129276600005, 29.160495097000094],\n\t\t\t\t[94.98906457600003, 29.15398386700012],\n\t\t\t\t[95.04766564900007, 29.140806377000033],\n\t\t\t\t[95.09903202400011, 29.113779603000083],\n\t\t\t\t[95.11691206900008, 29.108095195000047],\n\t\t\t\t[95.19153283800006, 29.096829733000092],\n\t\t\t\t[95.19969771300003, 29.094245911000073],\n\t\t\t\t[95.2078625900001, 29.089595032000105],\n\t\t\t\t[95.21282352700013, 29.08186940500012],\n\t\t\t\t[95.21406376100009, 29.07308441200003],\n\t\t\t\t[95.21633752500009, 29.06499705000003],\n\t\t\t\t[95.22491581200012, 29.05936431900001],\n\t\t\t\t[95.2815531820001, 29.052672221000094],\n\t\t\t\t[95.36740605062847, 29.03649616327051],\n\t\t\t\t[95.42982403198397, 29.046524645630395],\n\t\t\t\t[95.48757683710141, 29.068994487006023],\n\t\t\t\t[95.51130660000013, 29.131788839000095],\n\t\t\t\t[95.52143518100007, 29.13786082000003],\n\t\t\t\t[95.52267541500004, 29.161192729000064],\n\t\t\t\t[95.51192671700011, 29.19754709900006],\n\t\t\t\t[95.51533736200014, 29.209432679000074],\n\t\t\t\t[95.55016727700007, 29.212481588000017],\n\t\t\t\t[95.55202762800008, 29.220129700000072],\n\t\t\t\t[95.55068404100012, 29.230284119000046],\n\t\t\t\t[95.55378462800007, 29.239043275000128],\n\t\t\t\t[95.56442997300007, 29.2456061810001],\n\t\t\t\t[95.57290490800006, 29.247259827000065],\n\t\t\t\t[95.58168990100006, 29.24746653300012],\n\t\t\t\t[95.59233524600006, 29.249688619000025],\n\t\t\t\t[95.64669738938943, 29.22835044810863],\n\t\t\t\t[95.71716496895556, 29.218283651027733],\n\t\t\t\t[95.7473653601981, 29.27365103497256],\n\t\t\t\t[95.74478072100004, 29.340432435000068],\n\t\t\t\t[95.77640669800007, 29.345548401000073],\n\t\t\t\t[95.79594038900007, 29.352886455000046],\n\t\t\t\t[95.86313352662813, 29.32398502037684],\n\t\t\t\t[95.95373470035588, 29.35921881015993],\n\t\t\t\t[96.01413548284108, 29.364252208700393],\n\t\t\t\t[96.07453626532634, 29.369285607240855],\n\t\t\t\t[96.14196578000008, 29.368466899000097],\n\t\t\t\t[96.15095747900011, 29.35407501200008],\n\t\t\t\t[96.16604699800013, 29.303173726000054],\n\t\t\t\t[96.17627893100013, 29.28645640100011],\n\t\t\t\t[96.20542443800014, 29.256949158000097],\n\t\t\t\t[96.23529341600005, 29.241213684000016],\n\t\t\t\t[96.26784956900008, 29.24173044900006],\n\t\t\t\t[96.30412642400006, 29.261212464000053],\n\t\t\t\t[96.32324670400004, 29.275010071000096],\n\t\t\t\t[96.33709598900009, 29.27971262700008],\n\t\t\t\t[96.34991174300006, 29.274234924],\n\t\t\t\t[96.36624149600004, 29.257233379000056],\n\t\t\t\t[96.36686161300008, 29.24421091700013],\n\t\t\t\t[96.34236698400014, 29.21064707500001],\n\t\t\t\t[96.32748417200008, 29.180442200000087],\n\t\t\t\t[96.31642541500008, 29.171863912000063],\n\t\t\t\t[96.21007531700008, 29.145767314000082],\n\t\t\t\t[96.19364221300003, 29.13693064400009],\n\t\t\t\t[96.1835136310001, 29.123778992000027],\n\t\t\t\t[96.17462528500005, 29.108844503000043],\n\t\t\t\t[96.17595371463305, 29.017353609711428],\n\t\t\t\t[96.19532275757172, 28.941105845485463],\n\t\t\t\t[96.24858762565306, 28.945343306324006],\n\t\t\t\t[96.29465549772947, 28.99232448388489],\n\t\t\t\t[96.36656829155606, 29.036536563468914],\n\t\t\t\t[96.45760542900013, 28.99458791100001],\n\t\t\t\t[96.45119755100012, 28.98138458300012],\n\t\t\t\t[96.45212772700006, 28.970377502000034],\n\t\t\t\t[96.46008589700011, 28.963349507000103],\n\t\t\t\t[96.47465865100008, 28.962057597000054],\n\t\t\t\t[96.49222863800003, 28.94800160700005],\n\t\t\t\t[96.50039351400005, 28.929243062000054],\n\t\t\t\t[96.51083215400013, 28.885524801000074],\n\t\t\t\t[96.52375126100003, 28.864414979000045],\n\t\t\t\t[96.57666792800006, 28.808526917000066],\n\t\t\t\t[96.59258426900004, 28.757884013000094],\n\t\t\t\t[96.59800971353144, 28.709910398443995],\n\t\t\t\t[96.50104350465409, 28.687631303142155],\n\t\t\t\t[96.50237514126326, 28.644476217418358],\n\t\t\t\t[96.40901887262294, 28.558928647938785],\n\t\t\t\t[96.33645875408492, 28.47966681390912],\n\t\t\t\t[96.30185249373439, 28.420710938634112],\n\t\t\t\t[96.36964414401973, 28.378115826943503],\n\t\t\t\t[96.44112658162652, 28.39541577691665],\n\t\t\t\t[96.49522587100006, 28.42147043900009],\n\t\t\t\t[96.51238244700005, 28.428808492000073],\n\t\t\t\t[96.5615177204665, 28.44729288316006],\n\t\t\t\t[96.60442611830537, 28.444534241434948],\n\t\t\t\t[96.71692392905247, 28.436539447625634],\n\t\t\t\t[96.89788863200005, 28.354704489000042],\n\t\t\t\t[96.93395878200005, 28.336617737000026],\n\t\t\t\t[96.96579146400012, 28.330468242000066],\n\t\t\t\t[96.9974174400001, 28.337082825000053],\n\t\t\t\t[97.03297082600005, 28.357029928000074],\n\t\t\t\t[97.07844608600004, 28.3751425170001],\n\t\t\t\t[97.11554976400004, 28.366564230000066],\n\t\t\t\t[97.18272912600008, 28.31499115000007],\n\t\t\t\t[97.19327111900003, 28.311399638000083],\n\t\t\t\t[97.20277958200012, 28.31155466700004],\n\t\t\t\t[97.21053104700013, 28.308092346000066],\n\t\t\t\t[97.22076298000007, 28.28339101200008],\n\t\t\t\t[97.22965132700011, 28.274606018000085],\n\t\t\t\t[97.2852551680001, 28.235667827],\n\t\t\t\t[97.32349572800013, 28.217477723000073],\n\t\t\t\t[97.32866337100012, 28.190011699000095],\n\t\t\t\t[97.29889774600014, 28.12924021400009],\n\t\t\t\t[97.29290328000008, 28.095082092],\n\t\t\t\t[97.3065458580001, 28.0696572880001],\n\t\t\t\t[97.3551217050001, 28.02304514600003],\n\t\t\t\t[97.36225305200003, 27.994881490000083],\n\t\t\t\t[97.35677535000013, 27.98056711800008],\n\t\t\t\t[97.34003218600003, 27.951809184000084],\n\t\t\t\t[97.33569136600005, 27.93560862200006],\n\t\t\t\t[97.33631148300009, 27.91318105100008],\n\t\t\t\t[97.33817183500008, 27.90155385300004],\n\t\t\t\t[97.33352095600003, 27.894164124000028],\n\t\t\t\t[97.3149174400001, 27.884603983000105],\n\t\t\t\t[97.29290328000008, 27.877550151],\n\t\t\t\t[97.28866581300014, 27.88434560200004],\n\t\t\t\t[97.28804569500005, 27.8977556360001],\n\t\t\t\t[97.27636682200011, 27.910338847],\n\t\t\t\t[97.26065718600006, 27.912044170000073],\n\t\t\t\t[97.24122684700006, 27.907858379000047],\n\t\t\t\t[97.2229333900001, 27.899719341000022],\n\t\t\t\t[97.21094445800003, 27.88951324500006],\n\t\t\t\t[97.19802535100013, 27.87326100700004],\n\t\t\t\t[97.1821090090001, 27.857267151000073],\n\t\t\t\t[97.13177616400003, 27.816856181],\n\t\t\t\t[97.12319787600006, 27.812153625000022],\n\t\t\t\t[97.11244917900007, 27.809208069000036],\n\t\t\t\t[97.10604130000013, 27.805539043000024],\n\t\t\t\t[97.09818648300006, 27.791017965],\n\t\t\t\t[97.09219201700006, 27.785488587000074],\n\t\t\t\t[97.07234826700005, 27.779184062000084],\n\t\t\t\t[97.06532027200006, 27.773990581000064],\n\t\t\t\t[97.06201298100007, 27.763345235000074],\n\t\t\t\t[97.06035933400011, 27.750451965000067],\n\t\t\t\t[97.05674198400004, 27.746782939000056],\n\t\t\t\t[97.05054081200007, 27.746782939000056],\n\t\t\t\t[97.03617476400007, 27.742920068000032],\n\t\t\t\t[97.00403202400008, 27.73427724200006],\n\t\t\t\t[96.99090621000005, 27.72662913000009],\n\t\t\t\t[96.95700647000012, 27.68807851200002],\n\t\t\t\t[96.93953983600011, 27.6740225220001],\n\t\t\t\t[96.89974898300005, 27.649476217000128],\n\t\t\t\t[96.88352258400005, 27.636324565000066],\n\t\t\t\t[96.87019006400004, 27.61909047500008],\n\t\t\t\t[96.86212854000007, 27.599298401000098],\n\t\t\t\t[96.86202518800013, 27.57836944600011],\n\t\t\t\t[96.86615930200003, 27.56844757100002],\n\t\t\t\t[96.87732141200007, 27.553073832000038],\n\t\t\t\t[96.88031864400011, 27.543849589000033],\n\t\t\t\t[96.88104211500007, 27.534392802000056],\n\t\t\t\t[96.88465946500008, 27.515840963000116],\n\t\t\t\t[96.88848352100013, 27.507185160000077],\n\t\t\t\t[96.89024051900009, 27.492483215000064],\n\t\t\t\t[96.87701135200007, 27.463079325000095],\n\t\t\t\t[96.8813521730001, 27.44411407500003],\n\t\t\t\t[96.90512333200013, 27.408405660000128],\n\t\t\t\t[97.06790409400008, 27.21709950800006],\n\t\t\t\t[97.09549930900005, 27.19126129200002],\n\t\t\t\t[97.10128706900014, 27.183303121000066],\n\t\t\t\t[97.10170048100014, 27.165268046000065],\n\t\t\t\t[97.1043876550001, 27.15601796500006],\n\t\t\t\t[97.11172570800005, 27.14883494100009],\n\t\t\t\t[97.12082076100006, 27.143925680000066],\n\t\t\t\t[97.12929569600004, 27.137879537000018],\n\t\t\t\t[97.13477339700012, 27.12733754500006],\n\t\t\t\t[97.13301639900004, 27.119586080000047],\n\t\t\t\t[97.1228878170001, 27.093696188000123],\n\t\t\t\t[97.1191671140001, 27.08728831000009],\n\t\t\t\t[97.10604130000013, 27.08258575400002],\n\t\t\t\t[97.09797977800014, 27.085893046000095],\n\t\t\t\t[97.08991825400005, 27.09219757100003],\n\t\t\t\t[97.07720585100009, 27.09648671500007],\n\t\t\t\t[97.06697391800003, 27.095246480000057],\n\t\t\t\t[97.05882660700013, 27.092075635000057],\n\t\t\t\t[97.0478536380001, 27.087805074000116],\n\t\t\t\t[97.03803511600006, 27.087029928],\n\t\t\t\t[97.02676965400008, 27.091474101000117],\n\t\t\t\t[97.01891483600014, 27.098708802000075],\n\t\t\t\t[97.01188684100003, 27.107028707000055],\n\t\t\t\t[97.00299849500004, 27.11452179000007],\n\t\t\t\t[96.86533247900013, 27.1716242480001],\n\t\t\t\t[96.84269820200007, 27.188522441000075],\n\t\t\t\t[96.84176802600012, 27.204387106000084],\n\t\t\t\t[96.85127649000003, 27.221181946000073],\n\t\t\t\t[96.85964807200008, 27.240715637000065],\n\t\t\t\t[96.85375695800008, 27.248725485000037],\n\t\t\t\t[96.82171757000009, 27.273065084000066],\n\t\t\t\t[96.80993534400005, 27.285777487000118],\n\t\t\t\t[96.78916141700012, 27.31797190400006],\n\t\t\t\t[96.77634566300003, 27.330632630000096],\n\t\t\t\t[96.75887902800008, 27.341743063000123],\n\t\t\t\t[96.72415246600008, 27.35626414000005],\n\t\t\t\t[96.70523889200012, 27.360759989000073],\n\t\t\t\t[96.68725549300012, 27.361741842000058],\n\t\t\t\t[96.67588667900003, 27.357659404000046],\n\t\t\t\t[96.65924686700004, 27.341433004000024],\n\t\t\t\t[96.64901493300005, 27.336213685000118],\n\t\t\t\t[96.63640588400011, 27.335541891000034],\n\t\t\t\t[96.62927453600008, 27.338694153000077],\n\t\t\t\t[96.62317671800014, 27.34365509100003],\n\t\t\t\t[96.61418501800006, 27.34840932300004],\n\t\t\t\t[96.58689986200005, 27.353576966000034],\n\t\t\t\t[96.57604781100014, 27.34541208900002],\n\t\t\t\t[96.5674695240001, 27.328307191000064],\n\t\t\t\t[96.54731571500014, 27.306448059000033],\n\t\t\t\t[96.53181278500011, 27.298541565000065],\n\t\t\t\t[96.51093550700006, 27.292495422000044],\n\t\t\t\t[96.49005822700008, 27.290738424000054],\n\t\t\t\t[96.47465865100008, 27.29538930300002],\n\t\t\t\t[96.40778934700012, 27.29817983000008],\n\t\t\t\t[96.14258589700006, 27.25751047800013],\n\t\t\t\t[96.07416630100005, 27.22986358600012],\n\t\t\t\t[96.01318811100009, 27.190796204000023],\n\t\t\t\t[95.97484419800008, 27.142892151000083],\n\t\t\t\t[95.93836063700007, 27.079898580000062],\n\t\t\t\t[95.91644983000003, 27.051373189000017],\n\t\t\t\t[95.88885461500013, 27.0270335900001],\n\t\t\t\t[95.86146610500009, 27.014217835000025],\n\t\t\t\t[95.8049320880001, 27.00476104800005],\n\t\t\t\t[95.77795699100005, 26.995149231000042],\n\t\t\t\t[95.73496219900011, 26.947296855000033],\n\t\t\t\t[95.70922733600003, 26.907454326000035],\n\t\t\t\t[95.69930546100011, 26.896188863000063],\n\t\t\t\t[95.68607629400003, 26.89127960300003],\n\t\t\t\t[95.63998091600007, 26.88642201800009],\n\t\t\t\t[95.62427128100012, 26.880737610000054],\n\t\t\t\t[95.61331587700005, 26.867921855000063],\n\t\t\t\t[95.60339400200013, 26.844254049000043],\n\t\t\t\t[95.59130171700008, 26.823738505000065],\n\t\t\t\t[95.57476525900006, 26.81614207000011],\n\t\t\t\t[95.55440474400012, 26.816607157000035],\n\t\t\t\t[95.53135705600005, 26.820276185000026],\n\t\t\t\t[95.4898092040001, 26.810716044000046],\n\t\t\t\t[95.46273075300013, 26.777178040000123],\n\t\t\t\t[95.43999312400007, 26.73537180600006],\n\t\t\t\t[95.4106409100001, 26.701627096],\n\t\t\t\t[95.3926575110001, 26.691756898],\n\t\t\t\t[95.31596968600007, 26.66907094300005],\n\t\t\t\t[95.27896936100012, 26.65294789700006],\n\t\t\t\t[95.26057255100011, 26.647625224000123],\n\t\t\t\t[95.24693311800007, 26.64890392100004],\n\t\t\t\t[95.23907515500008, 26.649640605000073],\n\t\t\t\t[95.22326216700009, 26.67036285400009],\n\t\t\t\t[95.20486535700007, 26.66757232700003],\n\t\t\t\t[95.19556359900014, 26.660751038000072],\n\t\t\t\t[95.18161096200004, 26.641682435000106],\n\t\t\t\t[95.1732393800001, 26.63382761700008],\n\t\t\t\t[95.16342085800011, 26.62974517800005],\n\t\t\t\t[95.14140669800014, 26.624990946000068],\n\t\t\t\t[95.13262170500013, 26.620805155000127],\n\t\t\t\t[95.12280318300009, 26.611606751000025],\n\t\t\t\t[95.11908247900004, 26.604217021000025],\n\t\t\t\t[95.1158785400001, 26.575639954000067],\n\t\t\t\t[95.11618859900005, 26.56933542900005],\n\t\t\t\t[95.11494836400004, 26.562565816000117],\n\t\t\t\t[95.10957401600007, 26.55130035400005],\n\t\t\t\t[95.09923872900009, 26.536107484000027],\n\t\t\t\t[95.06988651600011, 26.506238506],\n\t\t\t\t[95.05438358600009, 26.494921367000032],\n\t\t\t\t[95.04063765500013, 26.47559438100008],\n\t\t\t\t[95.04260135900006, 26.459678040000043],\n\t\t\t\t[95.0617216390001, 26.426605123000073],\n\t\t\t\t[95.06606245900014, 26.407433167000065],\n\t\t\t\t[95.06420210800013, 26.392602031000123],\n\t\t\t\t[95.05045617700011, 26.359064026000013],\n\t\t\t\t[95.04363488800004, 26.327696432],\n\t\t\t\t[95.04177453600005, 26.287595520000096],\n\t\t\t\t[95.04632206200006, 26.24795969700004],\n\t\t\t\t[95.05872440600007, 26.217677307000102],\n\t\t\t\t[95.06637251800004, 26.2110110470001],\n\t\t\t\t[95.07453739500005, 26.208323873000055],\n\t\t\t\t[95.08280562300007, 26.20661855100009],\n\t\t\t\t[95.09076379400005, 26.202691142000035],\n\t\t\t\t[95.09448449700005, 26.195043030000065],\n\t\t\t\t[95.08973026500007, 26.187601624000123],\n\t\t\t\t[95.08239221200006, 26.179798483000113],\n\t\t\t\t[95.07836145100009, 26.171323548000103],\n\t\t\t\t[95.08817997300008, 26.10409250900004],\n\t\t\t\t[95.10171919800013, 26.09339548800004],\n\t\t\t\t[95.13747928900005, 26.082956848],\n\t\t\t\t[95.1500883380001, 26.070967916000043],\n\t\t\t\t[95.15122522000007, 26.04993560800004],\n\t\t\t\t[95.13954634600003, 26.02993682900008],\n\t\t\t\t[95.10823042800013, 25.99510691300013],\n\t\t\t\t[95.0658557540001, 25.953817444000023],\n\t\t\t\t[95.04942264900012, 25.943740540000064],\n\t\t\t\t[95.01200891200006, 25.93144154900004],\n\t\t\t\t[95.0006400960001, 25.922036438000063],\n\t\t\t\t[94.99402551300005, 25.90043569],\n\t\t\t\t[94.99319869000004, 25.88095367400011],\n\t\t\t\t[95.01345585200005, 25.777704163000053],\n\t\t\t\t[95.01531620300005, 25.755121562000014],\n\t\t\t\t[95.00880497300011, 25.73713816300004],\n\t\t\t\t[94.99991662700006, 25.731557109000036],\n\t\t\t\t[94.97862593600007, 25.72907664000006],\n\t\t\t\t[94.96901412000005, 25.725614319],\n\t\t\t\t[94.96146936100013, 25.717966207000032],\n\t\t\t\t[94.87165572100014, 25.59802520800004],\n\t\t\t\t[94.86803837100007, 25.59471791600005],\n\t\t\t\t[94.85749637900005, 25.589343567000085],\n\t\t\t\t[94.8534656170001, 25.58603627500007],\n\t\t\t\t[94.85294885300004, 25.58076528000005],\n\t\t\t\t[94.86101037600014, 25.571411846],\n\t\t\t\t[94.86028690600006, 25.567174378000047],\n\t\t\t\t[94.85077844300014, 25.56278188100005],\n\t\t\t\t[94.83103804600012, 25.56247182300008],\n\t\t\t\t[94.82235640500005, 25.559112854000077],\n\t\t\t\t[94.80799035600012, 25.542628072000085],\n\t\t\t\t[94.78235884600008, 25.504594219000055],\n\t\t\t\t[94.76437544800007, 25.49167511000003],\n\t\t\t\t[94.74577193200014, 25.486610820000053],\n\t\t\t\t[94.71114872200013, 25.482786764000124],\n\t\t\t\t[94.69202844200004, 25.476327210000065],\n\t\t\t\t[94.65947229000005, 25.45550160800012],\n\t\t\t\t[94.6503600370001, 25.446649705000098],\n\t\t\t\t[94.63053348800008, 25.427389629000075],\n\t\t\t\t[94.60800256400012, 25.394626770000073],\n\t\t\t\t[94.55012496000006, 25.245281881],\n\t\t\t\t[94.55332889800013, 25.20414744000003],\n\t\t\t\t[94.57689335200013, 25.173606670000126],\n\t\t\t\t[94.61296350100014, 25.1613593550001],\n\t\t\t\t[94.65327111800008, 25.15412465400003],\n\t\t\t\t[94.68913456300004, 25.138518372000092],\n\t\t\t\t[94.70680790300014, 25.10994130500002],\n\t\t\t\t[94.71383589700014, 25.068264262000085],\n\t\t\t\t[94.7085649010001, 25.025889587000094],\n\t\t\t\t[94.68975467900003, 24.99509043400012],\n\t\t\t\t[94.67352828000008, 24.974807434000112],\n\t\t\t\t[94.65482141100011, 24.889153748000027],\n\t\t\t\t[94.63911177600005, 24.862798767000058],\n\t\t\t\t[94.59901086400004, 24.813473612000067],\n\t\t\t\t[94.59322310400006, 24.7837855020001],\n\t\t\t\t[94.59322310400006, 24.765931295000044],\n\t\t\t\t[94.58950240100006, 24.747250264000073],\n\t\t\t\t[94.58154423100012, 24.73011952800003],\n\t\t\t\t[94.56945194600013, 24.716399434],\n\t\t\t\t[94.55570601400007, 24.70885467600006],\n\t\t\t\t[94.54340702300004, 24.70733022000003],\n\t\t\t\t[94.53100468000008, 24.70748525000006],\n\t\t\t\t[94.51632857300007, 24.704953105000087],\n\t\t\t\t[94.50795699100013, 24.689010925000062],\n\t\t\t\t[94.48707971200014, 24.620462138000036],\n\t\t\t\t[94.47498742700003, 24.597388611000056],\n\t\t\t\t[94.43023563600008, 24.570904439000074],\n\t\t\t\t[94.4184534100001, 24.56031077100009],\n\t\t\t\t[94.41080529800013, 24.54594472300009],\n\t\t\t\t[94.39705936700005, 24.495069275000063],\n\t\t\t\t[94.38186649600004, 24.486310120000084],\n\t\t\t\t[94.37039432800003, 24.47773183300005],\n\t\t\t\t[94.36367639200012, 24.46582041500001],\n\t\t\t\t[94.36119592300014, 24.425409444000124],\n\t\t\t\t[94.35220422300011, 24.413937277000016],\n\t\t\t\t[94.34000858600007, 24.40600494400006],\n\t\t\t\t[94.32874312400003, 24.39448110000002],\n\t\t\t\t[94.32832971200003, 24.388486634000103],\n\t\t\t\t[94.33174035600013, 24.371097514000084],\n\t\t\t\t[94.33070682800013, 24.36285512300013],\n\t\t\t\t[94.32367883300003, 24.35466440800009],\n\t\t\t\t[94.30280155400004, 24.341021831000106],\n\t\t\t\t[94.29536014800004, 24.332598572],\n\t\t\t\t[94.28998580000007, 24.316759746000017],\n\t\t\t\t[94.28688521300006, 24.283066712000064],\n\t\t\t\t[94.28275109900011, 24.26642690100003],\n\t\t\t\t[94.23396854600009, 24.160335185000108],\n\t\t\t\t[94.22218632100004, 24.122637228000073],\n\t\t\t\t[94.21846561700005, 24.086670431000087],\n\t\t\t\t[94.21412479700007, 24.069177959000044],\n\t\t\t\t[94.20368615700005, 24.05775746700003],\n\t\t\t\t[94.19913863200003, 24.048093974000025],\n\t\t\t\t[94.19386763500006, 24.00967254700008],\n\t\t\t\t[94.1902502850001, 23.995280660000063],\n\t\t\t\t[94.14487837800004, 23.93887583400003],\n\t\t\t\t[94.13505985500007, 23.919006246000052],\n\t\t\t\t[94.13361291500007, 23.899162496000045],\n\t\t\t\t[94.13505985500007, 23.877303365],\n\t\t\t\t[94.13185591700011, 23.856968689000084],\n\t\t\t\t[94.12885926700005, 23.853904873000076],\n\t\t\t\t[94.11686975100014, 23.84164662700003],\n\t\t\t\t[94.09971317600008, 23.842628479000084],\n\t\t\t\t[94.08534712700009, 23.857511292000126],\n\t\t\t\t[94.07108443200008, 23.876114808000082],\n\t\t\t\t[94.05506473800006, 23.88794871],\n\t\t\t\t[93.99791060400014, 23.916965027000074],\n\t\t\t\t[93.97506962100005, 23.920918274000044],\n\t\t\t\t[93.94054976400014, 23.928876445000114],\n\t\t\t\t[93.91233443200008, 23.93900502500007],\n\t\t\t\t[93.88318892500007, 23.94530955000009],\n\t\t\t\t[93.80371057200006, 23.936059469000057],\n\t\t\t\t[93.78283329300007, 23.94546457900013],\n\t\t\t\t[93.74304244000007, 23.995280660000063],\n\t\t\t\t[93.71110640500012, 24.005460917000036],\n\t\t\t\t[93.66046350100004, 24.011222839000098],\n\t\t\t\t[93.61240441900009, 24.00905243000001],\n\t\t\t\t[93.58801314300007, 23.995228984000036],\n\t\t\t\t[93.58563602700008, 23.98729665100008],\n\t\t\t\t[93.58181197200008, 23.979596863],\n\t\t\t\t[93.57695438700006, 23.97300811800001],\n\t\t\t\t[93.57106327400004, 23.968021343000046],\n\t\t\t\t[93.5613481040001, 23.965695903000025],\n\t\t\t\t[93.55525028500006, 23.97099273700006],\n\t\t\t\t[93.54997928900013, 23.978020732000076],\n\t\t\t\t[93.54346805900013, 23.980888774000064],\n\t\t\t\t[93.52682824700014, 23.97538523300007],\n\t\t\t\t[93.49571903500009, 23.959132996000037],\n\t\t\t\t[93.47484175700009, 23.957505189000088],\n\t\t\t\t[93.45665165200006, 23.959959819000076],\n\t\t\t\t[93.44900354000009, 23.96892568],\n\t\t\t\t[93.44559289600005, 23.98161224400006],\n\t\t\t\t[93.4391850180001, 23.995228984000036],\n\t\t\t\t[93.40652551300013, 24.025847270000057],\n\t\t\t\t[93.39650028500012, 24.03752614400004],\n\t\t\t\t[93.36828495300006, 24.078479716000075],\n\t\t\t\t[93.34854455600009, 24.088892517000104],\n\t\t\t\t[93.32218957500004, 24.080055847],\n\t\t\t\t[93.30968387900003, 24.063984477000034],\n\t\t\t\t[93.30296594200013, 24.041143494000025],\n\t\t\t\t[93.30255946900013, 24.035774655000083],\n\t\t\t\t[93.30110559100012, 24.016571350000035],\n\t\t\t\t[93.30296594200013, 23.995280660000063],\n\t\t\t\t[93.30813358600011, 23.977503968000022],\n\t\t\t\t[93.31609175600005, 23.961096700000084],\n\t\t\t\t[93.33758915200013, 23.928411357000087],\n\t\t\t\t[93.34596073400007, 23.918696188000055],\n\t\t\t\t[93.35185184800008, 23.913916117000056],\n\t\t\t\t[93.35598596200003, 23.906991475000083],\n\t\t\t\t[93.3591899010001, 23.89094594300012],\n\t\t\t\t[93.35825972500004, 23.85526336700012],\n\t\t\t\t[93.37479618400005, 23.739017232000023],\n\t\t\t\t[93.4063188070001, 23.719121806000132],\n\t\t\t\t[93.41231327300011, 23.708709005000102],\n\t\t\t\t[93.42595585100014, 23.69080312100003],\n\t\t\t\t[93.43029667200011, 23.6803386430001],\n\t\t\t\t[93.43236372900009, 23.647317404000106],\n\t\t\t\t[93.40022098800011, 23.454021709000088],\n\t\t\t\t[93.3998075770001, 23.426090597000027],\n\t\t\t\t[93.4059053960001, 23.367670390000043],\n\t\t\t\t[93.4077657470001, 23.35637908900007],\n\t\t\t\t[93.40724898300004, 23.34725819900008],\n\t\t\t\t[93.40373498600007, 23.338757426000072],\n\t\t\t\t[93.38420129400009, 23.313125916000033],\n\t\t\t\t[93.37789676900007, 23.29682200100008],\n\t\t\t\t[93.37644982900008, 23.279484559000068],\n\t\t\t\t[93.38079065000005, 23.237264913],\n\t\t\t\t[93.37272912600008, 23.169827169000072],\n\t\t\t\t[93.37303918400005, 23.15422088700005],\n\t\t\t\t[93.37520959500006, 23.142154439000066],\n\t\t\t\t[93.37489953600004, 23.129726257000087],\n\t\t\t\t[93.33335168500008, 23.05228912300005],\n\t\t\t\t[93.31826216700006, 23.033659770000085],\n\t\t\t\t[93.29883182800006, 23.01795013400003],\n\t\t\t\t[93.27278690600008, 23.005909526000053],\n\t\t\t\t[93.24653527900006, 23.00448842400006],\n\t\t\t\t[93.22555464700008, 23.020378927000067],\n\t\t\t\t[93.21211877500014, 23.03988678000006],\n\t\t\t\t[93.19651249200007, 23.053839417000077],\n\t\t\t\t[93.17708215400012, 23.058438619000114],\n\t\t\t\t[93.15238081900009, 23.049937846000105],\n\t\t\t\t[93.14008182800006, 23.031902771000105],\n\t\t\t\t[93.13822147700006, 23.005263570000054],\n\t\t\t\t[93.14318241400008, 22.97751332600002],\n\t\t\t\t[93.15114058400007, 22.95622263600005],\n\t\t\t\t[93.17108768700007, 22.92043670700012],\n\t\t\t\t[93.17739221200009, 22.900205384000017],\n\t\t\t\t[93.17553186100008, 22.881705220000086],\n\t\t\t\t[93.16106246000004, 22.86098297200006],\n\t\t\t\t[93.12530236800012, 22.821553854000044],\n\t\t\t\t[93.11589725800007, 22.79840281200005],\n\t\t\t\t[93.11238326000012, 22.799953105000085],\n\t\t\t\t[93.07951704900012, 22.772719626000068],\n\t\t\t\t[93.07083540900004, 22.69287953700008],\n\t\t\t\t[93.07393599400007, 22.671898905000077],\n\t\t\t\t[93.08189416500005, 22.652830302000027],\n\t\t\t\t[93.10442509000006, 22.61593332900007],\n\t\t\t\t[93.11052290900011, 22.596347962000053],\n\t\t\t\t[93.10907596900012, 22.57469553600008],\n\t\t\t\t[93.09822391800009, 22.535266419000052],\n\t\t\t\t[93.09915409300004, 22.511960347000027],\n\t\t\t\t[93.10959273300006, 22.479042460000088],\n\t\t\t\t[93.11786096200012, 22.46286773700008],\n\t\t\t\t[93.15351770000012, 22.427521057],\n\t\t\t\t[93.16592004400007, 22.38659332300007],\n\t\t\t\t[93.17429162700006, 22.26939117400012],\n\t\t\t\t[93.17367150900009, 22.259417623000033],\n\t\t\t\t[93.16902063000003, 22.246911927000028],\n\t\t\t\t[93.16126916500008, 22.24251943000003],\n\t\t\t\t[93.15145064300003, 22.24096913700002],\n\t\t\t\t[93.12974654200013, 22.23161570200007],\n\t\t\t\t[93.12478560400007, 22.23228749600004],\n\t\t\t\t[93.12354537000004, 22.230685527],\n\t\t\t\t[93.12313195800004, 22.218386536000068],\n\t\t\t\t[93.14173547400009, 22.18727732400002],\n\t\t\t\t[93.11951460800009, 22.180972799000088],\n\t\t\t\t[93.10432173700013, 22.187173970000075],\n\t\t\t\t[93.09057580600012, 22.197147522000094],\n\t\t\t\t[93.07248905400007, 22.202470195000032],\n\t\t\t\t[93.04582401500005, 22.20686269100004],\n\t\t\t\t[93.03641890500006, 22.206242575000076],\n\t\t\t\t[93.02453332500005, 22.201901754000076],\n\t\t\t\t[93.02236291600008, 22.19621734600004],\n\t\t\t\t[93.02391320800007, 22.18882761700003],\n\t\t\t\t[93.02256962100012, 22.120976461000097],\n\t\t\t\t[93.0254635010001, 22.1129149370001],\n\t\t\t\t[93.00748010300003, 22.1059386190001],\n\t\t\t\t[92.99518111200007, 22.103251445000083],\n\t\t\t\t[92.98546594300012, 22.095965068000012],\n\t\t\t\t[92.9671724860001, 22.06268544600006],\n\t\t\t\t[92.96531213400004, 22.049559632000083],\n\t\t\t\t[92.96841272000012, 22.03617543500006],\n\t\t\t\t[92.97492395000006, 22.02330800400007],\n\t\t\t\t[92.97792118400008, 22.016486715000028],\n\t\t\t\t[92.97957482900006, 22.009355367000083],\n\t\t\t\t[92.97988488800013, 22.00227569600004],\n\t\t\t\t[92.97895471200007, 21.995351054000068],\n\t\t\t\t[92.97709436100007, 21.993025615000036],\n\t\t\t\t[92.97492395000006, 21.990906881000072],\n\t\t\t\t[92.96810266200004, 21.98723785400007],\n\t\t\t\t[92.9616947830001, 21.98687611900006],\n\t\t\t\t[92.95559696500004, 21.98961497],\n\t\t\t\t[92.95032596900006, 21.995351054000068],\n\t\t\t\t[92.93740686000007, 22.013024394000055],\n\t\t\t\t[92.92097375600014, 22.02180938700006],\n\t\t\t\t[92.90619429500009, 22.01731353800004],\n\t\t\t\t[92.89864953600005, 21.995402731000084],\n\t\t\t\t[92.88924442500007, 21.966722311000083],\n\t\t\t\t[92.87746219900009, 21.95700714200005],\n\t\t\t\t[92.86702356000006, 21.966515605000026],\n\t\t\t\t[92.8620626230001, 21.995402731000084],\n\t\t\t\t[92.85389774600009, 22.024134827000083],\n\t\t\t\t[92.83612105300006, 22.046510722000065],\n\t\t\t\t[92.77162886600013, 22.104181621000052],\n\t\t\t\t[92.7080668540001, 22.14795155800003],\n\t\t\t\t[92.68377893100006, 22.154307760000066],\n\t\t\t\t[92.67396040900007, 22.147073059],\n\t\t\t\t[92.67106652800004, 22.133895569000018],\n\t\t\t\t[92.6746838790001, 22.105576884000115],\n\t\t\t\t[92.67396040900007, 22.0952415980001],\n\t\t\t\t[92.6695162360001, 22.092657777000014],\n\t\t\t\t[92.66455529800004, 22.093846334000133],\n\t\t\t\t[92.66207482900006, 22.094776510000074],\n\t\t\t\t[92.65618371600004, 22.075294495],\n\t\t\t\t[92.65608036300006, 22.060566711],\n\t\t\t\t[92.65835412600006, 22.04656239800009],\n\t\t\t\t[92.65835412600006, 22.032816468000036],\n\t\t\t\t[92.65091272000012, 22.019173890000033],\n\t\t\t\t[92.63985396300012, 22.013386129000068],\n\t\t\t\t[92.6275549720001, 22.012352600000085],\n\t\t\t\t[92.61525598200006, 22.0087869260001],\n\t\t\t\t[92.60388716700004, 21.995402731000084],\n\t\t\t\t[92.59799605400008, 21.989304912000122],\n\t\t\t\t[92.59127811700006, 21.98424062200006],\n\t\t\t\t[92.58383671100012, 21.98031321200007],\n\t\t\t\t[92.57587854000013, 21.977574362000027],\n\t\t\t\t[92.57515507000005, 21.98656606100009],\n\t\t\t\t[92.57308801300007, 21.995402731000084],\n\t\t\t\t[92.55996219900004, 22.061341859],\n\t\t\t\t[92.5373279210001, 22.128624573000067],\n\t\t\t\t[92.54931685400004, 22.138494772000072],\n\t\t\t\t[92.56419966700008, 22.1383397420001],\n\t\t\t\t[92.57556848200005, 22.143300680000053],\n\t\t\t\t[92.57701542200004, 22.168673808000065],\n\t\t\t\t[92.51893111200008, 22.49537221300004],\n\t\t\t\t[92.51738081900004, 22.512580465],\n\t\t\t\t[92.50456506400008, 22.54379303000009],\n\t\t\t\t[92.50084436000009, 22.560536194000022],\n\t\t\t\t[92.50291141800011, 22.618620504000106],\n\t\t\t\t[92.49588342300012, 22.695618388000028],\n\t\t\t\t[92.49154260200004, 22.711069641000037],\n\t\t\t\t[92.48069055200011, 22.726159159000034],\n\t\t\t\t[92.45371545400008, 22.74796661400005],\n\t\t\t\t[92.44203658000009, 22.762926941000032],\n\t\t\t\t[92.4350085860001, 22.793286846000072],\n\t\t\t\t[92.42632694500003, 22.871059876000103],\n\t\t\t\t[92.4118575440001, 22.887932231],\n\t\t\t\t[92.37868127500008, 22.900437928000073],\n\t\t\t\t[92.35987105300006, 22.92661204000008],\n\t\t\t\t[92.3522229410001, 22.96033091300005],\n\t\t\t\t[92.3530497650001, 23.02991322800007],\n\t\t\t\t[92.3276249590001, 23.171429138000022],\n\t\t\t\t[92.32855513500004, 23.211194153000022],\n\t\t\t\t[92.3326892500001, 23.226257833000105],\n\t\t\t\t[92.35067264900005, 23.26098439500005],\n\t\t\t\t[92.35749393700013, 23.278941956000025],\n\t\t\t\t[92.35687382000003, 23.289122213],\n\t\t\t\t[92.3522229410001, 23.29883738200003],\n\t\t\t\t[92.3470552980001, 23.315425517000037],\n\t\t\t\t[92.34674523900009, 23.325295715000024],\n\t\t\t\t[92.34953576700013, 23.344958598000076],\n\t\t\t\t[92.34860559100008, 23.354105326000038],\n\t\t\t\t[92.34488488800008, 23.359117940000104],\n\t\t\t\t[92.33165572100012, 23.368652243],\n\t\t\t\t[92.32669478400004, 23.375266825],\n\t\t\t\t[92.32535119700009, 23.382165629000085],\n\t\t\t\t[92.32690149000013, 23.39601491300003],\n\t\t\t\t[92.32535119700009, 23.403507995000083],\n\t\t\t\t[92.31977014200004, 23.412163798000037],\n\t\t\t\t[92.30674768100005, 23.423868510000105],\n\t\t\t\t[92.30147668500007, 23.431800842000072],\n\t\t\t\t[92.29682580600013, 23.446580302000072],\n\t\t\t\t[92.29103804500005, 23.49528534000011],\n\t\t\t\t[92.25279748500009, 23.609309388],\n\t\t\t\t[92.25000695800003, 23.642614848000036],\n\t\t\t\t[92.26168583200007, 23.68511871300008],\n\t\t\t\t[92.25973660500011, 23.702640572000078],\n\t\t\t\t[92.25930871600013, 23.706486918000095],\n\t\t\t\t[92.23874149600005, 23.7168480430001],\n\t\t\t\t[92.22210168500004, 23.70777882900005],\n\t\t\t\t[92.20938928200007, 23.661605937],\n\t\t\t\t[92.19429976400005, 23.648144226000042],\n\t\t\t\t[92.18076053900012, 23.665378317000105],\n\t\t\t\t[92.17063195800006, 23.70364471400002],\n\t\t\t\t[92.15078820800005, 23.731653341000126],\n\t\t\t\t[92.10841353400014, 23.718243307000094],\n\t\t\t\t[92.09218713400003, 23.701345114],\n\t\t\t\t[92.05963098100005, 23.659487203000126],\n\t\t\t\t[92.04237105300007, 23.64556040500004],\n\t\t\t\t[92.01901330600003, 23.640056865000034],\n\t\t\t\t[92.00351037700005, 23.647420757000035],\n\t\t\t\t[91.96165246600009, 23.691139018000015],\n\t\t\t\t[91.94914677000008, 23.709768372000084],\n\t\t\t\t[91.93664107300009, 23.723540141000043],\n\t\t\t\t[91.9226884360001, 23.72297170000006],\n\t\t\t\t[91.91648726400007, 23.7098717250001],\n\t\t\t\t[91.91442020700003, 23.68832265300007],\n\t\t\t\t[91.91597050000007, 23.650159607000077],\n\t\t\t\t[91.94232548000008, 23.534430237000052],\n\t\t\t\t[91.94077518800009, 23.495181986000077],\n\t\t\t\t[91.91814091000003, 23.459938660000105],\n\t\t\t\t[91.9051184490001, 23.446631979000088],\n\t\t\t\t[91.88909875500013, 23.43593495800009],\n\t\t\t\t[91.83380497300004, 23.413894959000103],\n\t\t\t\t[91.81768192600003, 23.40092417400008],\n\t\t\t\t[91.79163700400005, 23.368342183000024],\n\t\t\t\t[91.7625948490001, 23.321549174],\n\t\t\t\t[91.74368127400004, 23.27232737300004],\n\t\t\t\t[91.74915897700004, 23.232407329000083],\n\t\t\t\t[91.76393843600005, 23.200626323000037],\n\t\t\t\t[91.77902795400013, 23.131767476000036],\n\t\t\t\t[91.79194706200013, 23.101149190000015],\n\t\t\t\t[91.79556441200003, 23.08949615500005],\n\t\t\t\t[91.7913269450001, 23.080375265000086],\n\t\t\t\t[91.77623742700007, 23.065259909000062],\n\t\t\t\t[91.77375695800004, 23.06489817300006],\n\t\t\t\t[91.76424849400013, 23.065647481000084],\n\t\t\t\t[91.76094120300013, 23.065492453000033],\n\t\t\t\t[91.75598026500006, 23.061539206000063],\n\t\t\t\t[91.75556685400005, 23.05683665000008],\n\t\t\t\t[91.75629032400008, 23.052159933000027],\n\t\t\t\t[91.75505009000011, 23.048232524000056],\n\t\t\t\t[91.73830692600006, 23.02466807100005],\n\t\t\t\t[91.73127893100008, 23.017330018000038],\n\t\t\t\t[91.7144324140001, 23.00311899800009],\n\t\t\t\t[91.70699100800005, 22.995367534000067],\n\t\t\t\t[91.69469201700014, 22.98813283300011],\n\t\t\t\t[91.66761356600006, 22.982629293000016],\n\t\t\t\t[91.65407434100007, 22.978055929000064],\n\t\t\t\t[91.64694299300004, 22.97658315000008],\n\t\t\t\t[91.63991499800005, 22.978004253000066],\n\t\t\t\t[91.63278365100012, 22.98030385300008],\n\t\t\t\t[91.62575565600008, 22.98154408800012],\n\t\t\t\t[91.61666060400012, 22.978055929000064],\n\t\t\t\t[91.61200972500006, 22.969839376000053],\n\t\t\t\t[91.60828902200006, 22.96033091300005],\n\t\t\t\t[91.60239790900005, 22.95296702100005],\n\t\t\t\t[91.58606815600012, 22.94446624800004],\n\t\t\t\t[91.58296757000005, 22.94790273100007],\n\t\t\t\t[91.5830709230001, 22.957798767000057],\n\t\t\t\t[91.57676639900006, 22.96880584800006],\n\t\t\t\t[91.5631238200001, 22.974981181000132],\n\t\t\t\t[91.54979130000004, 22.977229106000053],\n\t\t\t\t[91.53656213400006, 22.981854146],\n\t\t\t\t[91.52364302600006, 22.995212504000037],\n\t\t\t\t[91.51940555800007, 23.005625305000066],\n\t\t\t\t[91.51816532400005, 23.03508087200008],\n\t\t\t\t[91.51558150200009, 23.03880157500008],\n\t\t\t\t[91.50607303900006, 23.041178691000127],\n\t\t\t\t[91.50328251200011, 23.0444084680001],\n\t\t\t\t[91.49811486900012, 23.069962464000056],\n\t\t\t\t[91.47506717900006, 23.14308461500012],\n\t\t\t\t[91.47041630100011, 23.153290711000082],\n\t\t\t\t[91.46359501200004, 23.184115702000057],\n\t\t\t\t[91.46121789600011, 23.184425761000043],\n\t\t\t\t[91.44643843600005, 23.1978874710001],\n\t\t\t\t[91.44540490800011, 23.203029277],\n\t\t\t\t[91.44674849500007, 23.20879119900006],\n\t\t\t\t[91.44643843600005, 23.215534973],\n\t\t\t\t[91.43992720500012, 23.223518983000062],\n\t\t\t\t[91.43961714700004, 23.22264048200013],\n\t\t\t\t[91.43620650200012, 23.215715841000062],\n\t\t\t\t[91.43651656100008, 23.214863180000023],\n\t\t\t\t[91.42814498000013, 23.229513449000095],\n\t\t\t\t[91.41357222500005, 23.248633728000087],\n\t\t\t\t[91.39434859200003, 23.2626638790001],\n\t\t\t\t[91.37212772600009, 23.261888733000077],\n\t\t\t\t[91.36096561700003, 23.247522685],\n\t\t\t\t[91.35569462100011, 23.224139099000027],\n\t\t\t\t[91.35590132700008, 23.17964569100006],\n\t\t\t\t[91.37460819500006, 23.095723165000052],\n\t\t\t\t[91.37088749200007, 23.06277944],\n\t\t\t\t[91.33740116400003, 23.071073507000037],\n\t\t\t\t[91.31352665200006, 23.101045838000076],\n\t\t\t\t[91.30050419200012, 23.14230946900001],\n\t\t\t\t[91.27724979600009, 23.303255717000027],\n\t\t\t\t[91.27290897700004, 23.313487651000017],\n\t\t\t\t[91.26753462700009, 23.321549174],\n\t\t\t\t[91.26577762900007, 23.329352315000037],\n\t\t\t\t[91.27290897700004, 23.338499044000017],\n\t\t\t\t[91.28293420400007, 23.34764577300008],\n\t\t\t\t[91.28727502500004, 23.35555226700005],\n\t\t\t\t[91.28396773300005, 23.36144338000004],\n\t\t\t\t[91.27094527200006, 23.3645956430001],\n\t\t\t\t[91.2581295170001, 23.37363901800005],\n\t\t\t\t[91.24789758300005, 23.393766989000127],\n\t\t\t\t[91.23446171100005, 23.436270854000085],\n\t\t\t\t[91.22970747900007, 23.461178894000042],\n\t\t\t\t[91.22733036300014, 23.4687753300001],\n\t\t\t\t[91.22081913300008, 23.47789622000009],\n\t\t\t\t[91.20335249900012, 23.487921448000108],\n\t\t\t\t[91.19508426900006, 23.495181986000077],\n\t\t\t\t[91.1858858650001, 23.511563416000044],\n\t\t\t\t[91.17751428300011, 23.544274597000125],\n\t\t\t\t[91.16986617000003, 23.561973776000045],\n\t\t\t\t[91.14082401500013, 23.61209991500006],\n\t\t\t\t[91.13627648900012, 23.629514872000087],\n\t\t\t\t[91.13968713400004, 23.65357025100012],\n\t\t\t\t[91.15229618400014, 23.655094707000032],\n\t\t\t\t[91.1664555260001, 23.654087016000048],\n\t\t\t\t[91.1752405200001, 23.67031341600007],\n\t\t\t\t[91.16893599500008, 23.685377096000067],\n\t\t\t\t[91.15239953700006, 23.691009827000087],\n\t\t\t\t[91.13658654800008, 23.698890483000028],\n\t\t\t\t[91.13234908000004, 23.720646261000056],\n\t\t\t\t[91.14175419100008, 23.73989573200008],\n\t\t\t\t[91.15756717900007, 23.744985861000046],\n\t\t\t\t[91.17658410700005, 23.746536154000083],\n\t\t\t\t[91.19498091600013, 23.755166118000105],\n\t\t\t\t[91.20521285000012, 23.77157338500008],\n\t\t\t\t[91.2252633060001, 23.82614369800011],\n\t\t\t\t[91.22815718600009, 23.844979757000104],\n\t\t\t\t[91.22402307100003, 23.857485453000024],\n\t\t\t\t[91.2127576090001, 23.880739848000033],\n\t\t\t\t[91.21193078600004, 23.89445994100008],\n\t\t\t\t[91.21627160700012, 23.90838673900005],\n\t\t\t\t[91.25037805200003, 23.96404225700006],\n\t\t\t\t[91.26092004400004, 23.97727142400008],\n\t\t\t\t[91.27414921100006, 23.988226827000048],\n\t\t\t\t[91.29161584500008, 23.994815573000025],\n\t\t\t\t[91.30494836400004, 23.993859558000068],\n\t\t\t\t[91.30843257700013, 23.992501035000103],\n\t\t\t\t[91.31621382700007, 23.989467062000088],\n\t\t\t\t[91.32706587800004, 23.987865092000035],\n\t\t\t\t[91.3390548100001, 23.995228984000036],\n\t\t\t\t[91.34928674300005, 24.036053366000132],\n\t\t\t\t[91.35083703600009, 24.074242249000022],\n\t\t\t\t[91.36303267500011, 24.099847921000062],\n\t\t\t\t[91.40458052600007, 24.103129374000062],\n\t\t\t\t[91.48044152900013, 24.088014018000067],\n\t\t\t\t[91.51754520700007, 24.085197652000076],\n\t\t\t\t[91.55867964700008, 24.089667663000014],\n\t\t\t\t[91.58183068900007, 24.096101380000064],\n\t\t\t\t[91.59650679500004, 24.104989726000056],\n\t\t\t\t[91.60601525900012, 24.11886484800003],\n\t\t\t\t[91.61376672300014, 24.140103862],\n\t\t\t\t[91.62451542100007, 24.203459168000037],\n\t\t\t\t[91.62906294800007, 24.21531890900006],\n\t\t\t\t[91.63950158700004, 24.211701559000076],\n\t\t\t\t[91.65717492700003, 24.17136810400011],\n\t\t\t\t[91.66616662600006, 24.155916850000025],\n\t\t\t\t[91.68415002500006, 24.145478211000082],\n\t\t\t\t[91.70368371600006, 24.14294606500009],\n\t\t\t\t[91.72115035100012, 24.148992208000024],\n\t\t\t\t[91.73262251800003, 24.164314270000077],\n\t\t\t\t[91.73200240000006, 24.181677551000107],\n\t\t\t\t[91.72580122900007, 24.202063904000042],\n\t\t\t\t[91.72301070200012, 24.22097747800008],\n\t\t\t\t[91.73293257600011, 24.234284159000097],\n\t\t\t\t[91.79659794100013, 24.221597595000063],\n\t\t\t\t[91.80703658100003, 24.221132507000036],\n\t\t\t\t[91.8097237550001, 24.214543763000037],\n\t\t\t\t[91.81137740100013, 24.192038676000024],\n\t\t\t\t[91.81375451700006, 24.183124492],\n\t\t\t\t[91.84424361200007, 24.155322571000042],\n\t\t\t\t[91.86450077300009, 24.15059417700006],\n\t\t\t\t[91.87710982300007, 24.158035584000075],\n\t\t\t\t[91.88434452300004, 24.17555389500005],\n\t\t\t\t[91.90594527200011, 24.260639140000066],\n\t\t\t\t[91.90687544800005, 24.28035369900003],\n\t\t\t\t[91.89643680900014, 24.32011871400003],\n\t\t\t\t[91.89984745300006, 24.338050435000085],\n\t\t\t\t[91.92186161300003, 24.34450999000005],\n\t\t\t\t[91.93095666500011, 24.336965231000093],\n\t\t\t\t[91.95307417800012, 24.322986755],\n\t\t\t\t[91.97219445900004, 24.316062114000104],\n\t\t\t\t[91.97136763500009, 24.329678853000118],\n\t\t\t\t[91.94883671100007, 24.363526917000016],\n\t\t\t\t[91.9499735920001, 24.37538665800004],\n\t\t\t\t[92.03337935400003, 24.368849590000067],\n\t\t\t\t[92.06273156800012, 24.37102],\n\t\t\t\t[92.08825972500006, 24.38163950700003],\n\t\t\t\t[92.10758671100012, 24.40597910600006],\n\t\t\t\t[92.11120406100008, 24.43429779100005],\n\t\t\t\t[92.10593306500004, 24.495250143000092],\n\t\t\t\t[92.11089400300011, 24.514292908000087],\n\t\t\t\t[92.12319299300003, 24.525377503000087],\n\t\t\t\t[92.13859257000013, 24.533723246000065],\n\t\t\t\t[92.14997986200007, 24.54218295400004],\n\t\t\t\t[92.1531653240001, 24.54454945900001],\n\t\t\t\t[92.16360396300013, 24.55919972800008],\n\t\t\t\t[92.16887496000004, 24.574315084000077],\n\t\t\t\t[92.1734224860001, 24.60839569200006],\n\t\t\t\t[92.18293094900008, 24.647256368000015],\n\t\t\t\t[92.23378055900008, 24.777532654000098],\n\t\t\t\t[92.23646773300004, 24.793035584],\n\t\t\t\t[92.23688114400005, 24.808590190000032],\n\t\t\t\t[92.23502079300005, 24.824764914000028],\n\t\t\t\t[92.23492786100007, 24.82499071000008],\n\t\t\t\t[92.22179162600014, 24.856907654000068],\n\t\t\t\t[92.22175905800003, 24.857046883000052],\n\t\t\t\t[92.21765751100003, 24.874580994000084],\n\t\t\t\t[92.2230318610001, 24.89137583400013],\n\t\t\t\t[92.2521773680001, 24.902977194000087],\n\t\t\t\t[92.29024450000003, 24.891351286000045],\n\t\t\t\t[92.29041792900011, 24.891298320000104],\n\t\t\t\t[92.35814605200005, 24.853748899000024],\n\t\t\t\t[92.35832076000014, 24.853652039000096],\n\t\t\t\t[92.35932057700006, 24.84642836600004],\n\t\t\t\t[92.35935428900012, 24.846184794000052],\n\t\t\t\t[92.36350740900014, 24.841120014000026],\n\t\t\t\t[92.36359175600006, 24.84101715100006],\n\t\t\t\t[92.37092980900007, 24.837916565000015],\n\t\t\t\t[92.38074833200005, 24.836702169000077],\n\t\t\t\t[92.44203658000009, 24.855409037000058],\n\t\t\t\t[92.47769331900008, 24.863909810000067],\n\t\t\t\t[92.49154260200004, 24.883727722000046],\n\t\t\t\t[92.49453983600006, 24.894863993000072],\n\t\t\t\t[92.49133589700006, 24.91227895100012],\n\t\t\t\t[92.49126714800008, 24.912424218000055],\n\t\t\t\t[92.48379113800013, 24.92822113000004],\n\t\t\t\t[92.4743860270001, 24.93667022800004],\n\t\t\t\t[92.4742723330001, 24.936715371000062],\n\t\t\t\t[92.4497880460001, 24.946437073000098],\n\t\t\t\t[92.45002848600006, 24.94663618700004],\n\t\t\t\t[92.45805627500005, 24.953284201000045],\n\t\t\t\t[92.45782812800007, 24.953557685000035],\n\t\t\t\t[92.45402551300003, 24.95811594700008],\n\t\t\t\t[92.45376877000012, 24.9582310630001],\n\t\t\t\t[92.44451704900007, 24.96237925200002],\n\t\t\t\t[92.44444627300004, 24.962427197000082],\n\t\t\t\t[92.41247766200007, 24.98408335400002],\n\t\t\t\t[92.41246032100014, 24.98436081700008],\n\t\t\t\t[92.4122709560001, 24.987390646000037],\n\t\t\t\t[92.41213950000014, 24.987434336],\n\t\t\t\t[92.41186000600004, 24.987527227000058],\n\t\t\t\t[92.39470096900004, 24.993230082000096],\n\t\t\t\t[92.38694950400003, 24.99509043400012],\n\t\t\t\t[92.38692635100006, 24.99520183],\n\t\t\t\t[92.38687592400004, 24.9954444560001],\n\t\t\t\t[92.38493703500006, 25.004773236000048],\n\t\t\t\t[92.38105839100012, 25.02343495700002],\n\t\t\t\t[92.35625370300005, 25.037000021],\n\t\t\t\t[92.32814172400003, 25.048007101000096],\n\t\t\t\t[92.31212203000007, 25.0686001590001],\n\t\t\t\t[92.30354374200004, 25.07428456600003],\n\t\t\t\t[92.25155725100012, 25.080795797000107],\n\t\t\t\t[92.2336772060001, 25.08495575000005],\n\t\t\t\t[92.22013798000012, 25.090381775000097],\n\t\t\t\t[92.20804569500012, 25.098107401],\n\t\t\t\t[92.19409305900012, 25.109166159000026],\n\t\t\t\t[92.17921024600008, 25.126684469000068],\n\t\t\t\t[92.17269901600008, 25.131955465000104],\n\t\t\t\t[92.16474084500004, 25.133557434000053],\n\t\t\t\t[92.15099491400008, 25.129733379000086],\n\t\t\t\t[92.14551721200013, 25.13169708200003],\n\t\t\t\t[92.13859257000013, 25.136399638000015],\n\t\t\t\t[92.12412316900003, 25.136968079000056],\n\t\t\t\t[92.11616499900003, 25.139448548000033],\n\t\t\t\t[92.11037723800007, 25.144874573000024],\n\t\t\t\t[92.1004553630001, 25.159085592000068],\n\t\t\t\t[92.09291060400011, 25.164718323],\n\t\t\t\t[92.06603886000005, 25.174536845000077],\n\t\t\t\t[92.03399947100013, 25.181668193000107],\n\t\t\t\t[92.00175337700006, 25.18296010400006],\n\t\t\t\t[91.97508833800003, 25.175363668],\n\t\t\t\t[91.95627811700012, 25.169782613000066],\n\t\t\t\t[91.90057092300009, 25.177585754000106],\n\t\t\t\t[91.79370406100003, 25.16533844000007],\n\t\t\t\t[91.74533492100011, 25.169369202000055],\n\t\t\t\t[91.73014204900005, 25.167457174000063],\n\t\t\t\t[91.72373417200004, 25.161927796000057],\n\t\t\t\t[91.71773970600009, 25.149835511000063],\n\t\t\t\t[91.7107117110001, 25.14466786800007],\n\t\t\t\t[91.70182336400006, 25.14714833600003],\n\t\t\t\t[91.68890425700005, 25.15298777300002],\n\t\t\t\t[91.67743208800005, 25.152626038000037],\n\t\t\t\t[91.67226444500005, 25.13650299100003],\n\t\t\t\t[91.66203251100006, 25.127201233],\n\t\t\t\t[91.63867476400003, 25.12404897100005],\n\t\t\t\t[91.61314660700009, 25.12513417600006],\n\t\t\t\t[91.59619673700007, 25.128906555000086],\n\t\t\t\t[91.5801770430001, 25.140895488000027],\n\t\t\t\t[91.57345910700008, 25.152264302000034],\n\t\t\t\t[91.56612105300007, 25.15996409100002],\n\t\t\t\t[91.5487577720001, 25.161100973000103],\n\t\t\t\t[91.54017948400013, 25.157638652000074],\n\t\t\t\t[91.52343632100008, 25.145184632000095],\n\t\t\t\t[91.51165409400011, 25.14249745700006],\n\t\t\t\t[91.50090539600006, 25.14115387],\n\t\t\t\t[91.4807515870001, 25.135262757000092],\n\t\t\t\t[91.47103641800004, 25.133919170000027],\n\t\t\t\t[91.43186568300013, 25.137949931000023],\n\t\t\t\t[91.28396773300005, 25.178981018000073],\n\t\t\t\t[91.23570194500013, 25.201925354000096],\n\t\t\t\t[91.22495324700009, 25.201615296000043],\n\t\t\t\t[91.20314579300009, 25.191331686000026],\n\t\t\t\t[91.19084680200012, 25.189471334000032],\n\t\t\t\t[91.13534631400006, 25.191228333000097],\n\t\t\t\t[90.97514937400013, 25.167818909000047],\n\t\t\t\t[90.9434200450001, 25.15743194600013],\n\t\t\t\t[90.93482138600007, 25.156359858000044],\n\t\t\t\t[90.82198042800007, 25.142290752000108],\n\t\t\t\t[90.7939718020001, 25.14539133700005],\n\t\t\t\t[90.77939904800013, 25.151954244000038],\n\t\t\t\t[90.76689335100014, 25.16053253200006],\n\t\t\t\t[90.75397424300013, 25.167560527000077],\n\t\t\t\t[90.73795454900005, 25.16942087900007],\n\t\t\t\t[90.73268355400006, 25.16688873300008],\n\t\t\t\t[90.72203820800007, 25.15660512300009],\n\t\t\t\t[90.71635380000009, 25.153556214000062],\n\t\t\t\t[90.70767216000013, 25.15298777300002],\n\t\t\t\t[90.67056848100009, 25.158775533],\n\t\t\t\t[90.64896773300012, 25.167818909000047],\n\t\t\t\t[90.6375989180001, 25.171074524000048],\n\t\t\t\t[90.62343957500008, 25.171436259000032],\n\t\t\t\t[90.58333866400005, 25.16203114900007],\n\t\t\t\t[90.50137984200012, 25.168800761000014],\n\t\t\t\t[90.39978397700008, 25.149008687000034],\n\t\t\t\t[90.36464400300014, 25.149990540000104],\n\t\t\t\t[90.28692264800003, 25.180066223000082],\n\t\t\t\t[90.13008467700013, 25.211588847000044],\n\t\t\t\t[89.90813440000011, 25.29690663700002],\n\t\t\t\t[89.87020389800011, 25.29556305000007],\n\t\t\t\t[89.83459883600011, 25.282437236000092],\n\t\t\t\t[89.81904423000009, 25.284969381000067],\n\t\t\t\t[89.80736535600005, 25.304503073],\n\t\t\t\t[89.79852868700004, 25.340056458000035],\n\t\t\t\t[89.79501469000007, 25.374162903000112],\n\t\t\t\t[89.79923403500004, 25.402892809000022],\n\t\t\t\t[89.80069909700012, 25.41286855100013],\n\t\t\t\t[89.80856794000005, 25.439507112000015],\n\t\t\t\t[89.82323002100003, 25.489142965000056],\n\t\t\t\t[89.82509037300014, 25.56448720300004],\n\t\t\t\t[89.83439213000008, 25.63476715100002],\n\t\t\t\t[89.82421187300008, 25.674092916000106],\n\t\t\t\t[89.80152592000013, 25.72468414400005],\n\t\t\t\t[89.78312911000006, 25.81444610700005],\n\t\t\t\t[89.7869531660001, 25.839147441000065],\n\t\t\t\t[89.83005131100009, 25.90798044900005],\n\t\t\t\t[89.83439213000008, 25.931751608000113],\n\t\t\t\t[89.82643396000003, 25.937487691000072],\n\t\t\t\t[89.81072432500014, 25.938779603000015],\n\t\t\t\t[89.79201745600005, 25.94911488900003],\n\t\t\t\t[89.81155114700005, 25.955212708000076],\n\t\t\t\t[89.82560713700008, 25.965703024000035],\n\t\t\t\t[89.82865604700004, 25.979397278000064],\n\t\t\t\t[89.8152718500001, 25.99510691300013],\n\t\t\t\t[89.81413496900007, 25.99614044200011],\n\t\t\t\t[89.81268802900007, 25.996347148000055],\n\t\t\t\t[89.81103438300005, 25.99603708900007],\n\t\t\t\t[89.80932906100008, 25.995210266000058],\n\t\t\t\t[89.80917403100011, 25.99510691300013],\n\t\t\t\t[89.80886397300003, 25.99510691300013],\n\t\t\t\t[89.80204268400007, 25.98864736000006],\n\t\t\t\t[89.79553145400013, 25.985960185000053],\n\t\t\t\t[89.78943363500014, 25.9879755650001],\n\t\t\t\t[89.78395593200008, 25.99510691300013],\n\t\t\t\t[89.77641117400003, 26.008232727000077],\n\t\t\t\t[89.75584395400011, 26.032417297000066],\n\t\t\t\t[89.75021122300012, 26.041564026000046],\n\t\t\t\t[89.74871260600008, 26.05903066000009],\n\t\t\t\t[89.75114139900006, 26.071536357000085],\n\t\t\t\t[89.74984948700012, 26.08388702400005],\n\t\t\t\t[89.73672367300003, 26.100578511],\n\t\t\t\t[89.72876550300009, 26.114169413000084],\n\t\t\t\t[89.72432133000007, 26.130654195000048],\n\t\t\t\t[89.7184818930001, 26.14553700800009],\n\t\t\t\t[89.70654463700004, 26.154166972000056],\n\t\t\t\t[89.69765629100004, 26.154787089000095],\n\t\t\t\t[89.67770918800011, 26.153133443000073],\n\t\t\t\t[89.6703711340001, 26.15411529600003],\n\t\t\t\t[89.65817549700012, 26.159231262000034],\n\t\t\t\t[89.65579838100007, 26.161298320000085],\n\t\t\t\t[89.65724532100006, 26.165380758000097],\n\t\t\t\t[89.6578286080001, 26.18717448300005],\n\t\t\t\t[89.65838220200004, 26.207858785000028],\n\t\t\t\t[89.65300785400007, 26.222689921000054],\n\t\t\t\t[89.63492110200008, 26.22584218300001],\n\t\t\t\t[89.61332035300012, 26.219382629000066],\n\t\t\t\t[89.60639571100012, 26.2110110470001],\n\t\t\t\t[89.60846276900008, 26.180676982000037],\n\t\t\t\t[89.61528405800004, 26.169101461000096],\n\t\t\t\t[89.6144055580001, 26.164192200000073],\n\t\t\t\t[89.59399336800004, 26.16972157800008],\n\t\t\t\t[89.58675866700008, 26.169204814000025],\n\t\t\t\t[89.57993737800012, 26.166104228000094],\n\t\t\t\t[89.57342614800007, 26.16072987900013],\n\t\t\t\t[89.56278080300007, 26.142591452000104],\n\t\t\t\t[89.56939538600005, 26.130085754],\n\t\t\t\t[89.58577681500003, 26.122902731000053],\n\t\t\t\t[89.60422530100004, 26.120732320000073],\n\t\t\t\t[89.59254642800005, 26.113962708000102],\n\t\t\t\t[89.57787032100009, 26.107244771000083],\n\t\t\t\t[89.56691491700008, 26.098976543000063],\n\t\t\t\t[89.56701827000012, 26.087090963000023],\n\t\t\t\t[89.57694014500004, 26.082646790000112],\n\t\t\t\t[89.5907894290001, 26.085023906000046],\n\t\t\t\t[89.60386356700013, 26.084662171000062],\n\t\t\t\t[89.61135664900007, 26.072208150000066],\n\t\t\t\t[89.60288171400009, 26.055258280000075],\n\t\t\t\t[89.55916345200006, 26.02223704],\n\t\t\t\t[89.55068851700008, 25.995055237000102],\n\t\t\t\t[89.55182539900011, 25.98151601200003],\n\t\t\t\t[89.54908654800005, 25.96885528600008],\n\t\t\t\t[89.54169681900004, 25.959708558],\n\t\t\t\t[89.52841597500003, 25.957124735000022],\n\t\t\t\t[89.51818404200003, 25.96208567400005],\n\t\t\t\t[89.50945072500008, 25.97262766500002],\n\t\t\t\t[89.49534305900005, 25.995055237000102],\n\t\t\t\t[89.49064050300007, 25.997329],\n\t\t\t\t[89.4856278900001, 25.998724263000028],\n\t\t\t\t[89.48061527500005, 25.999241028000043],\n\t\t\t\t[89.42640669700012, 25.995055237000102],\n\t\t\t\t[89.42635502100012, 25.994951884000088],\n\t\t\t\t[89.42118737800007, 25.993194885000023],\n\t\t\t\t[89.41612308700013, 25.992626444000066],\n\t\t\t\t[89.4112655030001, 25.993194885000023],\n\t\t\t\t[89.40661462500003, 25.995055237000102],\n\t\t\t\t[89.39142175300003, 26.015467428000065],\n\t\t\t\t[89.37974287900005, 26.015312399000024],\n\t\t\t\t[89.3677539470001, 26.005442200000047],\n\t\t\t\t[89.35147587100005, 25.996863912000023],\n\t\t\t\t[89.33530114700005, 25.998569235000062],\n\t\t\t\t[89.31514733900008, 26.006785787000084],\n\t\t\t\t[89.29690555800005, 26.0181546030001],\n\t\t\t\t[89.27297937100013, 26.043476054000067],\n\t\t\t\t[89.23763269000011, 26.058100484000036],\n\t\t\t\t[89.22926110800006, 26.067195537000103],\n\t\t\t\t[89.22305993600008, 26.086574198000065],\n\t\t\t\t[89.21262129800004, 26.098976543000063],\n\t\t\t\t[89.19784183700011, 26.107709859000025],\n\t\t\t\t[89.13159265100012, 26.133754781],\n\t\t\t\t[89.11919030800004, 26.1466222130001],\n\t\t\t\t[89.11169722500011, 26.16450225900006],\n\t\t\t\t[89.10337732000005, 26.22517039000003],\n\t\t\t\t[89.09588423700012, 26.24103505500004],\n\t\t\t\t[89.07588545700008, 26.271059062000106],\n\t\t\t\t[89.06942590300014, 26.287388815000057],\n\t\t\t\t[89.0688574620001, 26.314260559000033],\n\t\t\t\t[89.0803296310001, 26.315604146000013],\n\t\t\t\t[89.09479903200014, 26.30950632700005],\n\t\t\t\t[89.10353234900009, 26.313692118000077],\n\t\t\t\t[89.10291223200011, 26.327334696],\n\t\t\t\t[89.09572920800008, 26.33451772100004],\n\t\t\t\t[89.07185469600006, 26.34061554],\n\t\t\t\t[89.05521488500005, 26.347023417000045],\n\t\t\t\t[89.05407800300003, 26.353948059000018],\n\t\t\t\t[89.05728194200003, 26.362629700000085],\n\t\t\t\t[89.05263106300004, 26.374618632000036],\n\t\t\t\t[89.04374271700004, 26.381078186000096],\n\t\t\t\t[89.02178023300007, 26.38624582900009],\n\t\t\t\t[89.01087650500011, 26.390173239000077],\n\t\t\t\t[89.00178145400014, 26.397149557000077],\n\t\t\t\t[88.98653690600008, 26.4127041630001],\n\t\t\t\t[88.97532312000004, 26.417871806000093],\n\t\t\t\t[88.95930342700012, 26.428568828],\n\t\t\t\t[88.95015669700012, 26.436940410000076],\n\t\t\t\t[88.94100996900005, 26.439420878000064],\n\t\t\t\t[88.92457686400007, 26.43213450100008],\n\t\t\t\t[88.91196781400004, 26.421230774000023],\n\t\t\t\t[88.89946211800003, 26.40448761000006],\n\t\t\t\t[88.89124556500013, 26.38578074100006],\n\t\t\t\t[88.89186568200006, 26.368779196000062],\n\t\t\t\t[88.91243290200009, 26.348935445000066],\n\t\t\t\t[88.94121667500008, 26.340098775000072],\n\t\t\t\t[88.96602136200005, 26.328471578000105],\n\t\t\t\t[88.97532312000004, 26.29994618800005],\n\t\t\t\t[88.9817309980001, 26.291832987000063],\n\t\t\t\t[88.98968916900009, 26.289404195000074],\n\t\t\t\t[88.99862919200007, 26.291522929000067],\n\t\t\t\t[89.00798262600011, 26.29715566],\n\t\t\t\t[89.00436527500005, 26.275709941000073],\n\t\t\t\t[89.01159997600013, 26.2691987110001],\n\t\t\t\t[89.02353723100003, 26.2688369750001],\n\t\t\t\t[89.03433760600007, 26.26578806600007],\n\t\t\t\t[89.03971195500003, 26.24718455000003],\n\t\t\t\t[89.01945479300014, 26.23447214800005],\n\t\t\t\t[88.97532312000004, 26.22434356700002],\n\t\t\t\t[88.94684940600013, 26.232921855000043],\n\t\t\t\t[88.90271773300003, 26.272919414000015],\n\t\t\t\t[88.8757943110001, 26.27736358600002],\n\t\t\t\t[88.85564050400012, 26.2651162720001],\n\t\t\t\t[88.84065433800009, 26.2320433550001],\n\t\t\t\t[88.82484134900005, 26.22656565400011],\n\t\t\t\t[88.80799483200008, 26.23343861900007],\n\t\t\t\t[88.7984863690001, 26.247649638000055],\n\t\t\t\t[88.79202681500004, 26.264599508000046],\n\t\t\t\t[88.78401696800006, 26.27994740900003],\n\t\t\t\t[88.74794681800006, 26.292504782000023],\n\t\t\t\t[88.6634041750001, 26.26444447900009],\n\t\t\t\t[88.64583418800004, 26.27601999900004],\n\t\t\t\t[88.65327559400004, 26.283099671000073],\n\t\t\t\t[88.69012089100005, 26.299842835000035],\n\t\t\t\t[88.70298832200007, 26.309661357],\n\t\t\t\t[88.71223840300007, 26.328264872000048],\n\t\t\t\t[88.70970625900009, 26.34061554],\n\t\t\t\t[88.69627038600004, 26.350279032000046],\n\t\t\t\t[88.67337772700012, 26.360717672000064],\n\t\t\t\t[88.66743493700011, 26.36815907800009],\n\t\t\t\t[88.66852014200009, 26.385729065000064],\n\t\t\t\t[88.66107873600009, 26.388881328000124],\n\t\t\t\t[88.6522420660001, 26.39151682600003],\n\t\t\t\t[88.64986495000005, 26.3983897910001],\n\t\t\t\t[88.65193200700008, 26.407071432000052],\n\t\t\t\t[88.65627282700007, 26.41513295500006],\n\t\t\t\t[88.63301843300013, 26.4200938930001],\n\t\t\t\t[88.62237308800007, 26.424538066000096],\n\t\t\t\t[88.6115210370001, 26.43084259100003],\n\t\t\t\t[88.60356286700005, 26.44019602500005],\n\t\t\t\t[88.59787845900007, 26.451461487000117],\n\t\t\t\t[88.59116052200005, 26.46122833300008],\n\t\t\t\t[88.57917159000004, 26.466034241000088],\n\t\t\t\t[88.55798425300009, 26.465724182000102],\n\t\t\t\t[88.54976770000013, 26.466654358000042],\n\t\t\t\t[88.52682336400011, 26.475387676000125],\n\t\t\t\t[88.50682458500006, 26.487634989000057],\n\t\t\t\t[88.49865970900004, 26.4948696900001],\n\t\t\t\t[88.48791101100011, 26.50577341800009],\n\t\t\t\t[88.47540531400011, 26.514971823000067],\n\t\t\t\t[88.46238285300007, 26.528821106000052],\n\t\t\t\t[88.44646651200009, 26.53553904300007],\n\t\t\t\t[88.41101648000011, 26.545099182000072],\n\t\t\t\t[88.39789066600008, 26.558690084000048],\n\t\t\t\t[88.39499678600009, 26.578378805000014],\n\t\t\t\t[88.39592696100004, 26.599566142000057],\n\t\t\t\t[88.39437666800012, 26.61801462800007],\n\t\t\t\t[88.38528161700003, 26.623544007000064],\n\t\t\t\t[88.37251753700008, 26.611606751000025],\n\t\t\t\t[88.36027022300004, 26.59310658800011],\n\t\t\t\t[88.35282881700005, 26.578688864000085],\n\t\t\t\t[88.33236495000006, 26.514661764],\n\t\t\t\t[88.31934248900012, 26.494921367000032],\n\t\t\t\t[88.31386478700006, 26.481537170000095],\n\t\t\t\t[88.31510502100008, 26.465052389],\n\t\t\t\t[88.32254642700008, 26.451771546000103],\n\t\t\t\t[88.33562056500006, 26.44820587200003],\n\t\t\t\t[88.34021976700006, 26.454148662000065],\n\t\t\t\t[88.34301029400007, 26.477196351000103],\n\t\t\t\t[88.34652429200008, 26.484017639000072],\n\t\t\t\t[88.35355228700013, 26.484586080000028],\n\t\t\t\t[88.37691003500004, 26.475335999000023],\n\t\t\t\t[88.43458093200013, 26.465155741000032],\n\t\t\t\t[88.46114261900004, 26.453890280000067],\n\t\t\t\t[88.47540531400011, 26.432031148000036],\n\t\t\t\t[88.49545577000009, 26.378080953000094],\n\t\t\t\t[88.49762618100004, 26.352707825],\n\t\t\t\t[88.47540531400011, 26.35580841100004],\n\t\t\t\t[88.46791223200006, 26.35405141200006],\n\t\t\t\t[88.4579903560001, 26.353017883000078],\n\t\t\t\t[88.44863692200005, 26.353431295000078],\n\t\t\t\t[88.44202233900006, 26.356118470000112],\n\t\t\t\t[88.43168705300013, 26.362216289000074],\n\t\t\t\t[88.4260026450001, 26.35792714500009],\n\t\t\t\t[88.42119673700012, 26.348728740000112],\n\t\t\t\t[88.41380700700006, 26.340202129000076],\n\t\t\t\t[88.36678145400003, 26.31343373600002],\n\t\t\t\t[88.35169193600012, 26.300979717000033],\n\t\t\t\t[88.33660241700011, 26.281807760000035],\n\t\t\t\t[88.33293339100004, 26.267235006000064],\n\t\t\t\t[88.33453536000013, 26.23080312100008],\n\t\t\t\t[88.32626713100012, 26.215920309000026],\n\t\t\t\t[88.30869714400012, 26.206101787000065],\n\t\t\t\t[88.25030277600007, 26.18801503500005],\n\t\t\t\t[88.22978723200009, 26.18403595000005],\n\t\t\t\t[88.21888350500012, 26.180160217000022],\n\t\t\t\t[88.21195886300006, 26.173752340000064],\n\t\t\t\t[88.20565433800004, 26.16641428700008],\n\t\t\t\t[88.19692102100004, 26.159644674000035],\n\t\t\t\t[88.16379642800007, 26.140472717000122],\n\t\t\t\t[88.15563155100006, 26.128483785000057],\n\t\t\t\t[88.14446944200012, 26.095875957000104],\n\t\t\t\t[88.14136885600004, 26.090501607000036],\n\t\t\t\t[88.13992191600005, 26.085333964000043],\n\t\t\t\t[88.14116215000013, 26.075463766000055],\n\t\t\t\t[88.14477950000008, 26.0705028280001],\n\t\t\t\t[88.15098067200006, 26.066988830000057],\n\t\t\t\t[88.15640669800007, 26.061407776000053],\n\t\t\t\t[88.15790531400006, 26.050452373000056],\n\t\t\t\t[88.1510323490001, 26.031332093000074],\n\t\t\t\t[88.12586592600007, 26.013400371],\n\t\t\t\t[88.10653894000012, 25.97996571900002],\n\t\t\t\t[88.08803877800005, 25.923224996],\n\t\t\t\t[88.08266442900003, 25.9159386190001],\n\t\t\t\t[88.07739343300005, 25.91278635700006],\n\t\t\t\t[88.07439620000008, 25.90813547800009],\n\t\t\t\t[88.08204431200005, 25.86384877600007],\n\t\t\t\t[88.08896895400005, 25.84865590400004],\n\t\t\t\t[88.08757369000006, 25.839974264000077],\n\t\t\t\t[88.08757369000006, 25.830982564000024],\n\t\t\t\t[88.10333500200005, 25.814807841000047],\n\t\t\t\t[88.1080375570001, 25.806281230000124],\n\t\t\t\t[88.11491052200006, 25.787264303000043],\n\t\t\t\t[88.12772627800007, 25.77491363500009],\n\t\t\t\t[88.14643314600005, 25.77574045800013],\n\t\t\t\t[88.16622522000011, 25.78364695300006],\n\t\t\t\t[88.18271000200008, 25.792431946000065],\n\t\t\t\t[88.22746179300003, 25.80426584900006],\n\t\t\t\t[88.25991459200009, 25.789021301000034],\n\t\t\t\t[88.32027266500006, 25.725252584000103],\n\t\t\t\t[88.39298140400012, 25.680759176000024],\n\t\t\t\t[88.41943973800011, 25.653784078000072],\n\t\t\t\t[88.42378055900008, 25.592237447000073],\n\t\t\t\t[88.43778487200012, 25.579835104],\n\t\t\t\t[88.47540531400011, 25.56257517600001],\n\t\t\t\t[88.48558557100012, 25.542628072000085],\n\t\t\t\t[88.51276737500007, 25.523714498000047],\n\t\t\t\t[88.52046716400008, 25.50929677400002],\n\t\t\t\t[88.53028568600013, 25.500201721000067],\n\t\t\t\t[88.55095625800004, 25.49648101800004],\n\t\t\t\t[88.59358931500003, 25.495085755000062],\n\t\t\t\t[88.61317468300007, 25.486404114000024],\n\t\t\t\t[88.64542077600004, 25.46733551000004],\n\t\t\t\t[88.66634973200013, 25.46289133800012],\n\t\t\t\t[88.67808028100006, 25.465888570000047],\n\t\t\t\t[88.68707198100003, 25.47389841700003],\n\t\t\t\t[88.69565026900005, 25.48361358600006],\n\t\t\t\t[88.70619226100013, 25.49167511000003],\n\t\t\t\t[88.71415043100006, 25.492811992000057],\n\t\t\t\t[88.72314213100003, 25.49141672800006],\n\t\t\t\t[88.73265059500011, 25.49100331700005],\n\t\t\t\t[88.74257246900004, 25.495189108000105],\n\t\t\t\t[88.74195235200006, 25.51275909400006],\n\t\t\t\t[88.77233809500012, 25.501958720000047],\n\t\t\t\t[88.78096805800004, 25.495189108000105],\n\t\t\t\t[88.79311202000014, 25.481959941000085],\n\t\t\t\t[88.80582442200011, 25.471676331000097],\n\t\t\t\t[88.81491947500007, 25.45860219300006],\n\t\t\t\t[88.81631473800007, 25.437208151000036],\n\t\t\t\t[88.79931319200006, 25.401706442000105],\n\t\t\t\t[88.79962325000014, 25.39560862300003],\n\t\t\t\t[88.81037194800012, 25.388425598000097],\n\t\t\t\t[88.81326582800011, 25.380054016000102],\n\t\t\t\t[88.81404097600006, 25.370390524000086],\n\t\t\t\t[88.81833011900011, 25.35964182600007],\n\t\t\t\t[88.84199792500004, 25.332821757000076],\n\t\t\t\t[88.84902592000003, 25.327189026000056],\n\t\t\t\t[88.85925785400013, 25.32470855700008],\n\t\t\t\t[88.88018680800008, 25.32346832300003],\n\t\t\t\t[88.88612959800014, 25.31907582600006],\n\t\t\t\t[88.90287276200007, 25.30341786700008],\n\t\t\t\t[88.92648889200007, 25.300472310000075],\n\t\t\t\t[88.97532312000004, 25.302642721000083],\n\t\t\t\t[88.98271285000004, 25.29447784400007],\n\t\t\t\t[88.98493493700005, 25.284969381000067],\n\t\t\t\t[88.98235111500009, 25.27489247700005],\n\t\t\t\t[88.97532312000004, 25.265228984000103],\n\t\t\t\t[88.93775435400005, 25.240165914],\n\t\t\t\t[88.9290727130001, 25.229417216000073],\n\t\t\t\t[88.9279875090001, 25.215929667000026],\n\t\t\t\t[88.93077803600005, 25.202648825000026],\n\t\t\t\t[88.92788415600006, 25.192726949000118],\n\t\t\t\t[88.90964237500003, 25.189161275000046],\n\t\t\t\t[88.92416345200007, 25.167870585000074],\n\t\t\t\t[88.89863529500013, 25.169317526000057],\n\t\t\t\t[88.83021569900012, 25.191331686000026],\n\t\t\t\t[88.82360111500003, 25.194845683],\n\t\t\t\t[88.81708988500009, 25.19680938700013],\n\t\t\t\t[88.8091317140001, 25.195259094],\n\t\t\t\t[88.80251713100012, 25.188127747000053],\n\t\t\t\t[88.79233687400006, 25.166578675000025],\n\t\t\t\t[88.78422367300004, 25.16094594400009],\n\t\t\t\t[88.72453739400004, 25.166475322000068],\n\t\t\t\t[88.66459273300012, 25.18688751200004],\n\t\t\t\t[88.6342586670001, 25.19226186200008],\n\t\t\t\t[88.59911869300004, 25.193140361000033],\n\t\t\t\t[88.59012699400012, 25.190143127000013],\n\t\t\t\t[88.57772465000005, 25.177482401000063],\n\t\t\t\t[88.57069665500012, 25.173244935000028],\n\t\t\t\t[88.55937951600004, 25.17076446600005],\n\t\t\t\t[88.55467696100004, 25.171126201000035],\n\t\t\t\t[88.5500260820001, 25.1731415820001],\n\t\t\t\t[88.5231543380001, 25.179807841000112],\n\t\t\t\t[88.49183842000008, 25.191124980000083],\n\t\t\t\t[88.47540531400011, 25.195104065000052],\n\t\t\t\t[88.44129886900004, 25.189729716],\n\t\t\t\t[88.4314803470001, 25.173038229000056],\n\t\t\t\t[88.43416752100012, 25.11665924100005],\n\t\t\t\t[88.42579593900007, 25.051056010000124],\n\t\t\t\t[88.41411706500008, 25.021522929000085],\n\t\t\t\t[88.39101770100007, 24.99509043400012],\n\t\t\t\t[88.38786543800006, 24.968761292000053],\n\t\t\t\t[88.37566980000014, 24.945610251000076],\n\t\t\t\t[88.34089156100009, 24.904139913],\n\t\t\t\t[88.32275313400004, 24.8746843470001],\n\t\t\t\t[88.31360640500009, 24.868302307000064],\n\t\t\t\t[88.29681156400011, 24.86969757100006],\n\t\t\t\t[88.25485030100009, 24.87995534300005],\n\t\t\t\t[88.24275801600004, 24.880601299000105],\n\t\t\t\t[88.24187951700009, 24.898765564000044],\n\t\t\t\t[88.23283614100012, 24.918273417000037],\n\t\t\t\t[88.21878015100009, 24.93514577200004],\n\t\t\t\t[88.20245039900004, 24.945300191000072],\n\t\t\t\t[88.1830200610001, 24.946979675000037],\n\t\t\t\t[88.16451989700005, 24.941114400000046],\n\t\t\t\t[88.11491052200006, 24.916413066000032],\n\t\t\t\t[88.11491052200006, 24.912020569000035],\n\t\t\t\t[88.12033654800007, 24.906775411000027],\n\t\t\t\t[88.12493575100012, 24.89814544700006],\n\t\t\t\t[88.13806156400005, 24.863496399000056],\n\t\t\t\t[88.14095544500003, 24.844582825000103],\n\t\t\t\t[88.13124027500004, 24.831767070000055],\n\t\t\t\t[88.11739099100004, 24.81926137300003],\n\t\t\t\t[88.10777917500013, 24.801097107000103],\n\t\t\t\t[88.09480839000008, 24.803112488000053],\n\t\t\t\t[88.08824548300004, 24.796136170000054],\n\t\t\t\t[88.08535160400004, 24.78401804600007],\n\t\t\t\t[88.0840080160001, 24.770452983000084],\n\t\t\t\t[88.07698002200004, 24.761177063000062],\n\t\t\t\t[88.06426761900013, 24.759161682000112],\n\t\t\t\t[88.05320886200013, 24.754975891000086],\n\t\t\t\t[88.04845463100014, 24.71120595300009],\n\t\t\t\t[88.0354321690001, 24.69381683400006],\n\t\t\t\t[88.02716394100014, 24.675730082000044],\n\t\t\t\t[88.02178959200006, 24.64560272200005],\n\t\t\t\t[88.04090987200004, 24.640435079000056],\n\t\t\t\t[88.05723962400003, 24.63410471600004],\n\t\t\t\t[88.06726485200005, 24.613666687000077],\n\t\t\t\t[88.08183760600008, 24.599869080000033],\n\t\t\t\t[88.08498986800004, 24.593874614000086],\n\t\t\t\t[88.08498986800004, 24.541733093000047],\n\t\t\t\t[88.08602339700013, 24.536720480000085],\n\t\t\t\t[88.09000248300003, 24.532999777000057],\n\t\t\t\t[88.0987874760001, 24.5224836230001],\n\t\t\t\t[88.10793420400006, 24.50796254500007],\n\t\t\t\t[88.10994958500004, 24.50098622700007],\n\t\t\t\t[88.13878503400008, 24.495250143000092],\n\t\t\t\t[88.40130131100011, 24.36941803000012],\n\t\t\t\t[88.47540531400011, 24.315467835000064],\n\t\t\t\t[88.49834965000008, 24.31097198500005],\n\t\t\t\t[88.56310021900003, 24.308207296000077],\n\t\t\t\t[88.61245121300004, 24.292885234000025],\n\t\t\t\t[88.63451705000006, 24.294125468000047],\n\t\t\t\t[88.64950321500004, 24.31536448200002],\n\t\t\t\t[88.66014856000004, 24.338257141000057],\n\t\t\t\t[88.68180098500011, 24.333890483000076],\n\t\t\t\t[88.71456384300012, 24.315416158000048],\n\t\t\t\t[88.73750817900003, 24.28709747300006],\n\t\t\t\t[88.74303755700004, 24.24753916500002],\n\t\t\t\t[88.74494958500009, 24.24337921200008],\n\t\t\t\t[88.74748173000006, 24.226971945000017],\n\t\t\t\t[88.74980717000005, 24.223251242000103],\n\t\t\t\t[88.74639652500014, 24.21407867500001],\n\t\t\t\t[88.73482100400008, 24.19842071500007],\n\t\t\t\t[88.73161706600013, 24.18984242800012],\n\t\t\t\t[88.73145573500011, 24.1897713150001],\n\t\t\t\t[88.71590743000007, 24.182917786000033],\n\t\t\t\t[88.69378991700006, 24.17532135100008],\n\t\t\t\t[88.68376468900004, 24.166536356000094],\n\t\t\t\t[88.67808028100006, 24.154289043000077],\n\t\t\t\t[88.67828698800014, 24.144651388000042],\n\t\t\t\t[88.68298954300013, 24.12429087300002],\n\t\t\t\t[88.68180098500011, 24.112663676000054],\n\t\t\t\t[88.67539310700005, 24.09183807400008],\n\t\t\t\t[88.67410119700003, 24.082639669000102],\n\t\t\t\t[88.67901045700006, 24.071219178],\n\t\t\t\t[88.69782067900007, 24.05625885000002],\n\t\t\t\t[88.70092126500009, 24.043649801000086],\n\t\t\t\t[88.72500248200004, 24.03837880500008],\n\t\t\t\t[88.72546757000009, 24.028896179000085],\n\t\t\t\t[88.7138403730001, 24.01468516100003],\n\t\t\t\t[88.70159305800007, 23.995280660000063],\n\t\t\t\t[88.70836267100003, 23.98355011000008],\n\t\t\t\t[88.71435713700004, 23.964403992000072],\n\t\t\t\t[88.71714766500003, 23.9431391400001],\n\t\t\t\t[88.71415043100006, 23.925155742000115],\n\t\t\t\t[88.70443526200006, 23.913709412000102],\n\t\t\t\t[88.66650476100006, 23.87949961400001],\n\t\t\t\t[88.65312056500011, 23.869784445000064],\n\t\t\t\t[88.63394860900007, 23.866141256000063],\n\t\t\t\t[88.61317468300007, 23.867846578000027],\n\t\t\t\t[88.59358931500003, 23.866916402000086],\n\t\t\t\t[88.57762129700012, 23.855160014000077],\n\t\t\t\t[88.57436568200012, 23.845625712000086],\n\t\t\t\t[88.5754508870001, 23.836556499000025],\n\t\t\t\t[88.57762129700012, 23.827616476000102],\n\t\t\t\t[88.57751794500007, 23.818521424000025],\n\t\t\t\t[88.57235030200007, 23.806894226000068],\n\t\t\t\t[88.55767419400007, 23.785681051000026],\n\t\t\t\t[88.55271325700005, 23.774984029],\n\t\t\t\t[88.55250655100008, 23.765423890000093],\n\t\t\t\t[88.55974125200004, 23.75028269500008],\n\t\t\t\t[88.56118819200003, 23.74100677500006],\n\t\t\t\t[88.54010420800012, 23.64995290100005],\n\t\t\t\t[88.54155114800011, 23.63876495400008],\n\t\t\t\t[88.55095625800004, 23.6344241340001],\n\t\t\t\t[88.56123986800003, 23.632486268],\n\t\t\t\t[88.56635583500014, 23.628739726000063],\n\t\t\t\t[88.56439213100009, 23.61620819100007],\n\t\t\t\t[88.5610848390001, 23.608611756000087],\n\t\t\t\t[88.56170495600009, 23.602023010000025],\n\t\t\t\t[88.57142012600013, 23.592333679000077],\n\t\t\t\t[88.58154870600009, 23.58832875600008],\n\t\t\t\t[88.60128910400005, 23.59034413700003],\n\t\t\t\t[88.6092472740001, 23.588793844000023],\n\t\t\t\t[88.62423344000007, 23.573859355000067],\n\t\t\t\t[88.64764286400003, 23.535076193000023],\n\t\t\t\t[88.66448938000008, 23.518307190000073],\n\t\t\t\t[88.69378991700006, 23.499807028000035],\n\t\t\t\t[88.70464196800003, 23.495181986000077],\n\t\t\t\t[88.71942142800003, 23.468103536000015],\n\t\t\t\t[88.73192712400004, 23.472625224000055],\n\t\t\t\t[88.74370935100012, 23.489316711000086],\n\t\t\t\t[88.7568351650001, 23.49879933700005],\n\t\t\t\t[88.77016768400011, 23.48882578600005],\n\t\t\t\t[88.76789392100011, 23.467276713],\n\t\t\t\t[88.71926639800006, 23.348291728000063],\n\t\t\t\t[88.69503015100008, 23.312609152000064],\n\t\t\t\t[88.68593510000005, 23.293308004000025],\n\t\t\t\t[88.68660689300003, 23.271603902000024],\n\t\t\t\t[88.69658044500011, 23.252354432000104],\n\t\t\t\t[88.71001631700005, 23.241218160000088],\n\t\t\t\t[88.77569706300011, 23.22163279200005],\n\t\t\t\t[88.78618737800008, 23.221529439000037],\n\t\t\t\t[88.79419722500006, 23.224965922000067],\n\t\t\t\t[88.80096683800008, 23.23075368300003],\n\t\t\t\t[88.80954512500011, 23.236050517000066],\n\t\t\t\t[88.82267093900009, 23.237962545000087],\n\t\t\t\t[88.83962080900011, 23.234810283000044],\n\t\t\t\t[88.90964237500003, 23.212434388000062],\n\t\t\t\t[88.91806563300008, 23.208584493],\n\t\t\t\t[88.92695398000012, 23.206517436000055],\n\t\t\t\t[88.95423913600013, 23.207421773000092],\n\t\t\t\t[88.9599752200001, 23.2026933800001],\n\t\t\t\t[88.95982019100006, 23.19445098900006],\n\t\t\t\t[88.95470422400007, 23.18380564400009],\n\t\t\t\t[88.94586755400007, 23.174348857000027],\n\t\t\t\t[88.91909916200007, 23.153859152000038],\n\t\t\t\t[88.86478723200014, 23.10027069100009],\n\t\t\t\t[88.85129968300004, 23.07513010700005],\n\t\t\t\t[88.84871586100007, 23.02384124800001],\n\t\t\t\t[88.83941410300014, 22.995367534000067],\n\t\t\t\t[88.83879398700009, 22.975808004000058],\n\t\t\t\t[88.84277307100012, 22.964568380000017],\n\t\t\t\t[88.86173832200006, 22.942399190000074],\n\t\t\t\t[88.87217696100004, 22.926767070000054],\n\t\t\t\t[88.89346765200008, 22.879638164000127],\n\t\t\t\t[88.90514652600007, 22.86643483500005],\n\t\t\t\t[88.93310347500011, 22.85811492900008],\n\t\t\t\t[88.94452396600008, 22.848012187000037],\n\t\t\t\t[88.94679773000013, 22.834524638000076],\n\t\t\t\t[88.94514408400005, 22.815094300000098],\n\t\t\t\t[88.94121667500008, 22.795663961000017],\n\t\t\t\t[88.9368758550001, 22.782331441000096],\n\t\t\t\t[88.92623051000004, 22.767035218000032],\n\t\t\t\t[88.91496504800006, 22.75440033000011],\n\t\t\t\t[88.90814375800011, 22.74078359000002],\n\t\t\t\t[88.91057255100009, 22.722593486000065],\n\t\t\t\t[88.92250980600011, 22.69370636000012],\n\t\t\t\t[88.92592045100014, 22.680838928000114],\n\t\t\t\t[88.93000288900004, 22.658618063000077],\n\t\t\t\t[88.9423535570001, 22.637482402000032],\n\t\t\t\t[88.95201704900012, 22.611902568000076],\n\t\t\t\t[88.95640954600003, 22.584979146000066],\n\t\t\t\t[88.95031172700004, 22.561983134000016],\n\t\t\t\t[88.9279875090001, 22.54813385000007],\n\t\t\t\t[88.95904504400005, 22.53681671100007],\n\t\t\t\t[88.97098230000006, 22.52792836500008],\n\t\t\t\t[88.979974, 22.490928039000025],\n\t\t\t\t[88.99837080900011, 22.45124053900004],\n\t\t\t\t[89.00250492300006, 22.427986145000105],\n\t\t\t\t[89.00074792500004, 22.420131328000068],\n\t\t\t\t[88.99216963700013, 22.406953837000103],\n\t\t\t\t[88.98948246300012, 22.396670227000115],\n\t\t\t\t[88.98958581600004, 22.386903382000057],\n\t\t\t\t[89.00152307100007, 22.333676656000094],\n\t\t\t\t[89.00694909700013, 22.32142934200006],\n\t\t\t\t[89.02353723100003, 22.294815979000035],\n\t\t\t\t[89.00911950700004, 22.285617575000046],\n\t\t\t\t[89.01862797100011, 22.26468861900004],\n\t\t\t\t[89.06229455500011, 22.21156524700011],\n\t\t\t\t[89.07071781400009, 22.194822083000062],\n\t\t\t\t[89.07619551700009, 22.175030009000082],\n\t\t\t\t[89.07815922000009, 22.150845439000122],\n\t\t\t\t[89.06069258700006, 22.130484925000076],\n\t\t\t\t[89.06039472700007, 22.12986888200004],\n\t\t\t\t[89.06031334700003, 22.130601304000038],\n\t\t\t\t[89.04371178500003, 22.13739655200004],\n\t\t\t\t[89.04859459700003, 22.12295156500005],\n\t\t\t\t[89.04566491000003, 22.11204661700009],\n\t\t\t\t[89.03988691500007, 22.100897528000075],\n\t\t\t\t[89.03687584700003, 22.085598049000055],\n\t\t\t\t[89.04004967500003, 22.069525458000044],\n\t\t\t\t[89.05404707100007, 22.04364655200004],\n\t\t\t\t[89.05738366000003, 22.03123607000009],\n\t\t\t\t[89.06560306100005, 21.96710846600007],\n\t\t\t\t[89.06088300900007, 21.93846263200004],\n\t\t\t\t[89.03687584700003, 21.925116278000075],\n\t\t\t\t[89.02312259200005, 21.93109772300005],\n\t\t\t\t[89.01303144600007, 21.929429429000038],\n\t\t\t\t[89.00806725400008, 21.92055898600006],\n\t\t\t\t[89.00953209700003, 21.90460846600007],\n\t\t\t\t[88.99301191500007, 21.912665106000077],\n\t\t\t\t[88.96045983200008, 21.93431224200009],\n\t\t\t\t[88.94467207100007, 21.938788153000075],\n\t\t\t\t[88.93783613400007, 21.94871653900009],\n\t\t\t\t[88.93458092500003, 21.969305731000077],\n\t\t\t\t[88.92872155000003, 21.98655833500004],\n\t\t\t\t[88.91391035200007, 21.98655833500004],\n\t\t\t\t[88.90503991000003, 21.96942780200004],\n\t\t\t\t[88.91081790500004, 21.946478583000044],\n\t\t\t\t[88.92408287900008, 21.926336981000077],\n\t\t\t\t[88.93783613400007, 21.917669989000046],\n\t\t\t\t[88.95191491000003, 21.913885809000078],\n\t\t\t\t[88.96827233200008, 21.904730536000045],\n\t\t\t\t[88.99586022200003, 21.88418203300006],\n\t\t\t\t[89.01587975400008, 21.853338934000078],\n\t\t\t\t[89.03093509200005, 21.770453192000048],\n\t\t\t\t[89.04371178500003, 21.733343817000048],\n\t\t\t\t[89.04786217500003, 21.72801341400009],\n\t\t\t\t[89.06788170700008, 21.709133205000057],\n\t\t\t\t[89.08277428500003, 21.678208726000037],\n\t\t\t\t[89.08521569100003, 21.674709377000056],\n\t\t\t\t[89.08822675900007, 21.633734442000048],\n\t\t\t\t[89.08269290500004, 21.617336330000057],\n\t\t\t\t[89.06421959700003, 21.609198309000078],\n\t\t\t\t[89.05323326900003, 21.609808661000045],\n\t\t\t\t[89.04468834700003, 21.61351146000004],\n\t\t\t\t[89.03882897200003, 21.61945221600007],\n\t\t\t\t[89.03687584700003, 21.626898505000042],\n\t\t\t\t[89.03394616000003, 21.633246161000045],\n\t\t\t\t[89.02759850400008, 21.62457916900007],\n\t\t\t\t[89.02165774800005, 21.611802476000037],\n\t\t\t\t[89.01978600400008, 21.60610586100006],\n\t\t\t\t[89.00025475400008, 21.60342031500005],\n\t\t\t\t[88.97575931100005, 21.61591217700004],\n\t\t\t\t[88.93384850400008, 21.64394765800006],\n\t\t\t\t[88.89698326900003, 21.650132554000038],\n\t\t\t\t[88.89161217500003, 21.653509833000044],\n\t\t\t\t[88.88607832100007, 21.661810614000046],\n\t\t\t\t[88.88160241000003, 21.672023830000057],\n\t\t\t\t[88.87208092500003, 21.74900950700004],\n\t\t\t\t[88.86605879000007, 21.766831773000035],\n\t\t\t\t[88.85865319100003, 21.766831773000035],\n\t\t\t\t[88.85572350400008, 21.748846747000073],\n\t\t\t\t[88.84156334700003, 21.71625397300005],\n\t\t\t\t[88.83822675900007, 21.701971747000073],\n\t\t\t\t[88.84294681100005, 21.684149481000077],\n\t\t\t\t[88.85987389400003, 21.65257396000004],\n\t\t\t\t[88.85865319100003, 21.636542059000078],\n\t\t\t\t[88.84424889400003, 21.622219143000052],\n\t\t\t\t[88.82398522200003, 21.617254950000074],\n\t\t\t\t[88.80583743600005, 21.622870184000078],\n\t\t\t\t[88.79786217500003, 21.64020416900007],\n\t\t\t\t[88.81478925900007, 21.65387604400007],\n\t\t\t\t[88.81836998800003, 21.65761953300006],\n\t\t\t\t[88.81853274800005, 21.665838934000078],\n\t\t\t\t[88.81666100400008, 21.675034898000035],\n\t\t\t\t[88.81088300900007, 21.69171784100007],\n\t\t\t\t[88.80494225400008, 21.67186107000009],\n\t\t\t\t[88.80046634200005, 21.661851304000038],\n\t\t\t\t[88.79420006600003, 21.65761953300006],\n\t\t\t\t[88.78402754000007, 21.655951239000046],\n\t\t\t\t[88.77906334700003, 21.651190497000073],\n\t\t\t\t[88.77711022200003, 21.64354075700004],\n\t\t\t\t[88.77686608200008, 21.63344961100006],\n\t\t\t\t[88.78174889400003, 21.61424388200004],\n\t\t\t\t[88.79102623800003, 21.598863023000035],\n\t\t\t\t[88.79664147200003, 21.584418036000045],\n\t\t\t\t[88.79053795700008, 21.56826406500005],\n\t\t\t\t[88.76246178500003, 21.555853583000044],\n\t\t\t\t[88.72787519600007, 21.559881903000075],\n\t\t\t\t[88.70753014400003, 21.57831452000005],\n\t\t\t\t[88.72217858200008, 21.609198309000078],\n\t\t\t\t[88.68799889400003, 21.678127346000053],\n\t\t\t\t[88.68490644600007, 21.697211005000042],\n\t\t\t\t[88.70362389400003, 21.810614325000074],\n\t\t\t\t[88.69800866000003, 21.825506903000075],\n\t\t\t\t[88.69450931100005, 21.83982982000009],\n\t\t\t\t[88.71469160200007, 21.89785390800006],\n\t\t\t\t[88.71697024800005, 21.951971747000073],\n\t\t\t\t[88.72217858200008, 21.966131903000075],\n\t\t\t\t[88.73316491000003, 21.97719961100006],\n\t\t\t\t[88.74683678500003, 21.987127997000073],\n\t\t\t\t[88.75831139400003, 21.99945709800005],\n\t\t\t\t[88.76303144600007, 22.017279364000046],\n\t\t\t\t[88.75464928500003, 22.037583726000037],\n\t\t\t\t[88.71705162900008, 22.05805084800005],\n\t\t\t\t[88.70850670700008, 22.072211005000042],\n\t\t\t\t[88.71485436300003, 22.08698151200008],\n\t\t\t\t[88.73015384200005, 22.103583075000074],\n\t\t\t\t[88.76303144600007, 22.130560614000046],\n\t\t\t\t[88.74390709700003, 22.129339911000045],\n\t\t\t\t[88.72657311300003, 22.121161200000074],\n\t\t\t\t[88.71216881600003, 22.109035549000055],\n\t\t\t\t[88.70167076900003, 22.095851955000057],\n\t\t\t\t[88.69483483200008, 22.08152903900009],\n\t\t\t\t[88.69288170700008, 22.06586334800005],\n\t\t\t\t[88.69947350400008, 22.053208726000037],\n\t\t\t\t[88.71851647200003, 22.048041083000044],\n\t\t\t\t[88.73072350400008, 22.037176825000074],\n\t\t\t\t[88.72331790500004, 22.01308828300006],\n\t\t\t\t[88.70167076900003, 21.97601959800005],\n\t\t\t\t[88.69841556100005, 21.962591864000046],\n\t\t\t\t[88.68995201900003, 21.94599030200004],\n\t\t\t\t[88.67872155000003, 21.936672268000052],\n\t\t\t\t[88.66700280000003, 21.945013739000046],\n\t\t\t\t[88.65626061300003, 21.941066799000055],\n\t\t\t\t[88.64258873800003, 21.94090403900009],\n\t\t\t\t[88.63086998800003, 21.945461330000057],\n\t\t\t\t[88.62598717500003, 21.955511786000045],\n\t\t\t\t[88.62745201900003, 21.970404364000046],\n\t\t\t\t[88.63168379000007, 21.979803778000075],\n\t\t\t\t[88.64633222700007, 22.00023021000004],\n\t\t\t\t[88.65349368600005, 22.018011786000045],\n\t\t\t\t[88.65259850400008, 22.031805731000077],\n\t\t\t\t[88.64877363400007, 22.046047268000052],\n\t\t\t\t[88.64503014400003, 22.075140692000048],\n\t\t\t\t[88.63949629000007, 22.09723541900007],\n\t\t\t\t[88.63949629000007, 22.109523830000057],\n\t\t\t\t[88.65699303500003, 22.15106842700004],\n\t\t\t\t[88.67400149800005, 22.162054755000042],\n\t\t\t\t[88.68311608200008, 22.18496328300006],\n\t\t\t\t[88.67994225400008, 22.204413153000075],\n\t\t\t\t[88.66016686300003, 22.205023505000042],\n\t\t\t\t[88.66114342500003, 22.198960679000038],\n\t\t\t\t[88.65601647200003, 22.183254299000055],\n\t\t\t\t[88.64966881600003, 22.169094143000052],\n\t\t\t\t[88.64633222700007, 22.167792059000078],\n\t\t\t\t[88.64429772200003, 22.16229889500005],\n\t\t\t\t[88.63493899800005, 22.144964911000045],\n\t\t\t\t[88.63086998800003, 22.125799872000073],\n\t\t\t\t[88.62208092500003, 22.116034247000073],\n\t\t\t\t[88.61915123800003, 22.109523830000057],\n\t\t\t\t[88.61833743600005, 22.10297272300005],\n\t\t\t\t[88.61996504000007, 22.07831452000005],\n\t\t\t\t[88.62549889400003, 22.05927155200004],\n\t\t\t\t[88.62598717500003, 22.048041083000044],\n\t\t\t\t[88.62037194100003, 22.02997467700004],\n\t\t\t\t[88.60254967500003, 22.006415106000077],\n\t\t\t\t[88.59864342500003, 21.990301825000074],\n\t\t\t\t[88.60027103000004, 21.947211005000042],\n\t\t\t\t[88.59839928500003, 21.929348049000055],\n\t\t\t\t[88.56706790500004, 21.850816148000035],\n\t\t\t\t[88.56462649800005, 21.83234284100007],\n\t\t\t\t[88.56544030000003, 21.771185614000046],\n\t\t\t\t[88.56462649800005, 21.766831773000035],\n\t\t\t\t[88.58130944100003, 21.76943594000005],\n\t\t\t\t[88.60417728000004, 21.77875397300005],\n\t\t\t\t[88.62403405000003, 21.77802155200004],\n\t\t\t\t[88.63282311300003, 21.750067450000074],\n\t\t\t\t[88.63021894600007, 21.731756903000075],\n\t\t\t\t[88.62338300900007, 21.710272528000075],\n\t\t\t\t[88.61264082100007, 21.69749583500004],\n\t\t\t\t[88.59864342500003, 21.70538971600007],\n\t\t\t\t[88.59180748800003, 21.70538971600007],\n\t\t\t\t[88.59961998800003, 21.637274481000077],\n\t\t\t\t[88.59506269600007, 21.612127997000073],\n\t\t\t\t[88.57813561300003, 21.623439846000053],\n\t\t\t\t[88.57813561300003, 21.57168203300006],\n\t\t\t\t[88.57227623800003, 21.557928778000075],\n\t\t\t\t[88.55892988400007, 21.555568752000056],\n\t\t\t\t[88.54476972700007, 21.56199778900009],\n\t\t\t\t[88.53646894600007, 21.575100002000056],\n\t\t\t\t[88.53028405000003, 21.564398505000042],\n\t\t\t\t[88.52963300900007, 21.55337148600006],\n\t\t\t\t[88.53443444100003, 21.542914130000042],\n\t\t\t\t[88.54395592500003, 21.534084377000056],\n\t\t\t\t[88.51295006600003, 21.524644273000035],\n\t\t\t\t[88.49390709700003, 21.534816799000055],\n\t\t\t\t[88.48796634200005, 21.55654531500005],\n\t\t\t\t[88.49561608200008, 21.581854559000078],\n\t\t\t\t[88.50212649800005, 21.58934153900009],\n\t\t\t\t[88.50879967500003, 21.59438711100006],\n\t\t\t\t[88.51400800900007, 21.600816148000035],\n\t\t\t\t[88.51612389400003, 21.612616278000075],\n\t\t\t\t[88.51661217500003, 21.62641022300005],\n\t\t\t\t[88.51880944100003, 21.639146226000037],\n\t\t\t\t[88.52295983200008, 21.64988841400009],\n\t\t\t\t[88.52963300900007, 21.65761953300006],\n\t\t\t\t[88.50953209700003, 21.71230703300006],\n\t\t\t\t[88.50489342500003, 21.741522528000075],\n\t\t\t\t[88.51270592500003, 21.763413804000038],\n\t\t\t\t[88.53288821700005, 21.795314846000053],\n\t\t\t\t[88.53101647200003, 21.82412344000005],\n\t\t\t\t[88.51587975400008, 21.850816148000035],\n\t\t\t\t[88.49561608200008, 21.876695054000038],\n\t\t\t\t[88.51465905000003, 21.91620514500005],\n\t\t\t\t[88.51498457100007, 21.937201239000046],\n\t\t\t\t[88.49561608200008, 21.95180898600006],\n\t\t\t\t[88.49984785200007, 21.933661200000074],\n\t\t\t\t[88.49236087300005, 21.922023830000057],\n\t\t\t\t[88.48121178500003, 21.909898179000038],\n\t\t\t\t[88.47445722700007, 21.890326239000046],\n\t\t\t\t[88.47706139400003, 21.87181224200009],\n\t\t\t\t[88.49203535200007, 21.837144273000035],\n\t\t\t\t[88.49561608200008, 21.81867096600007],\n\t\t\t\t[88.49350019600007, 21.805161851000037],\n\t\t\t\t[88.48829186300003, 21.803656317000048],\n\t\t\t\t[88.48145592500003, 21.805161851000037],\n\t\t\t\t[88.47445722700007, 21.80097077000005],\n\t\t\t\t[88.46827233200008, 21.77724844000005],\n\t\t\t\t[88.45769290500004, 21.75885651200008],\n\t\t\t\t[88.45337975400008, 21.74176666900007],\n\t\t\t\t[88.45215905000003, 21.722805080000057],\n\t\t\t\t[88.45476321700005, 21.70538971600007],\n\t\t\t\t[88.46859785200007, 21.67715078300006],\n\t\t\t\t[88.47217858200008, 21.663275458000044],\n\t\t\t\t[88.46827233200008, 21.64394765800006],\n\t\t\t\t[88.45630944100003, 21.62400950700004],\n\t\t\t\t[88.44190514400003, 21.616156317000048],\n\t\t\t\t[88.42611738400007, 21.611029364000046],\n\t\t\t\t[88.40967858200008, 21.599269924000055],\n\t\t\t\t[88.39307701900003, 21.60024648600006],\n\t\t\t\t[88.38355553500003, 21.631415106000077],\n\t\t\t\t[88.38282311300003, 21.67133209800005],\n\t\t\t\t[88.39258873800003, 21.698553778000075],\n\t\t\t\t[88.38062584700003, 21.696193752000056],\n\t\t\t\t[88.36451256600003, 21.68695709800005],\n\t\t\t\t[88.35572350400008, 21.68496328300006],\n\t\t\t\t[88.34620201900003, 21.688625393000052],\n\t\t\t\t[88.34066816500007, 21.69749583500004],\n\t\t\t\t[88.33643639400003, 21.708726304000038],\n\t\t\t\t[88.33122806100005, 21.71906159100007],\n\t\t\t\t[88.32634524800005, 21.711086330000057],\n\t\t\t\t[88.32471764400003, 21.70136139500005],\n\t\t\t\t[88.32740319100003, 21.691107489000046],\n\t\t\t\t[88.34571373800003, 21.67059967700004],\n\t\t\t\t[88.34945722700007, 21.660956122000073],\n\t\t\t\t[88.34880618600005, 21.65029531500005],\n\t\t\t\t[88.34546959700003, 21.636542059000078],\n\t\t\t\t[88.33545983200008, 21.615790106000077],\n\t\t\t\t[88.32178795700008, 21.60565827000005],\n\t\t\t\t[88.30974368600005, 21.610174872000073],\n\t\t\t\t[88.30445397200003, 21.63344961100006],\n\t\t\t\t[88.30201256600003, 21.74518463700008],\n\t\t\t\t[88.29818769600007, 21.764105536000045],\n\t\t\t\t[88.28980553500003, 21.780218817000048],\n\t\t\t\t[88.27312259200005, 21.79791901200008],\n\t\t\t\t[88.26156660200007, 21.798651434000078],\n\t\t\t\t[88.26417076900003, 21.77529531500005],\n\t\t\t\t[88.29542076900003, 21.676581122000073],\n\t\t\t\t[88.29704837300005, 21.65387604400007],\n\t\t\t\t[88.29444420700008, 21.64280833500004],\n\t\t\t\t[88.28419030000003, 21.621242580000057],\n\t\t\t\t[88.28337649800005, 21.609198309000078],\n\t\t\t\t[88.28760826900003, 21.60028717700004],\n\t\t\t\t[88.30062910200007, 21.58934153900009],\n\t\t\t\t[88.30445397200003, 21.581854559000078],\n\t\t\t\t[88.30583743600005, 21.57168203300006],\n\t\t\t\t[88.30372155000003, 21.568793036000045],\n\t\t\t\t[88.29786217500003, 21.566555080000057],\n\t\t\t\t[88.28711998800003, 21.558294989000046],\n\t\t\t\t[88.27898196700005, 21.555161851000037],\n\t\t\t\t[88.26612389400003, 21.553859768000052],\n\t\t\t\t[88.25440514400003, 21.55467357000009],\n\t\t\t\t[88.24927819100003, 21.558294989000046],\n\t\t\t\t[88.24594160200007, 21.579901434000078],\n\t\t\t\t[88.23747806100005, 21.601711330000057],\n\t\t\t\t[88.22437584700003, 21.613023179000038],\n\t\t\t\t[88.20826256600003, 21.60297272300005],\n\t\t\t\t[88.18946373800003, 21.641791083000044],\n\t\t\t\t[88.18189537900008, 21.665228583000044],\n\t\t\t\t[88.18091881600003, 21.68496328300006],\n\t\t\t\t[88.19044030000003, 21.70408763200004],\n\t\t\t\t[88.20346113400007, 21.724351304000038],\n\t\t\t\t[88.21045983200008, 21.747259833000044],\n\t\t\t\t[88.20142662900008, 21.774318752000056],\n\t\t\t\t[88.20972741000003, 21.78856028900009],\n\t\t\t\t[88.20378665500004, 21.80540599200009],\n\t\t\t\t[88.15406334700003, 21.88808828300006],\n\t\t\t\t[88.15642337300005, 21.89785390800006],\n\t\t\t\t[88.15943444100003, 21.90615469000005],\n\t\t\t\t[88.14673912900008, 21.95921458500004],\n\t\t\t\t[88.14991295700008, 21.976385809000078],\n\t\t\t\t[88.15626061300003, 21.99087148600006],\n\t\t\t\t[88.16431725400008, 22.003119208000044],\n\t\t\t\t[88.20679772200003, 22.05337148600006],\n\t\t\t\t[88.22242272200003, 22.077948309000078],\n\t\t\t\t[88.21273847700007, 22.100043036000045],\n\t\t\t\t[88.20337975400008, 22.15176015800006],\n\t\t\t\t[88.19800866000003, 22.167792059000078],\n\t\t\t\t[88.16529381600003, 22.18500397300005],\n\t\t\t\t[88.11841881600003, 22.20018138200004],\n\t\t\t\t[88.08130944100003, 22.217352606000077],\n\t\t\t\t[88.07732181100005, 22.24042389500005],\n\t\t\t\t[88.05974368600005, 22.22947825700004],\n\t\t\t\t[88.04346764400003, 22.224758205000057],\n\t\t\t\t[88.02702884200005, 22.227850653000075],\n\t\t\t\t[88.00904381600003, 22.24042389500005],\n\t\t\t\t[87.98511803500003, 22.26593659100007],\n\t\t\t\t[87.97266686300003, 22.28318919500009],\n\t\t\t\t[87.96745853000004, 22.298488674000055],\n\t\t\t\t[87.96420332100007, 22.319281317000048],\n\t\t\t\t[87.95069420700008, 22.35618724200009],\n\t\t\t\t[87.94752037900008, 22.373846747000073],\n\t\t\t\t[87.94613691500007, 22.394924221000053],\n\t\t\t\t[87.94044030000003, 22.413031317000048],\n\t\t\t\t[87.92798912900008, 22.424221096000053],\n\t\t\t\t[87.90658613400007, 22.424750067000048],\n\t\t\t\t[87.90658613400007, 22.41860586100006],\n\t\t\t\t[87.92286217500003, 22.397772528000075],\n\t\t\t\t[87.93580162900008, 22.355169989000046],\n\t\t\t\t[87.94752037900008, 22.27765534100007],\n\t\t\t\t[87.95281009200005, 22.26243724200009],\n\t\t\t\t[87.96534264400003, 22.24481842700004],\n\t\t\t\t[87.99195397200003, 22.21588776200008],\n\t\t\t\t[88.00847415500004, 22.204901434000078],\n\t\t\t\t[88.02540123800003, 22.200913804000038],\n\t\t\t\t[88.05738366000003, 22.198879299000055],\n\t\t\t\t[88.09546959700003, 22.191229559000078],\n\t\t\t\t[88.13257897200003, 22.17914459800005],\n\t\t\t\t[88.16098066500007, 22.15656159100007],\n\t\t\t\t[88.17351321700005, 22.116888739000046],\n\t\t\t\t[88.16431725400008, 22.089789130000042],\n\t\t\t\t[88.14063561300003, 22.06012604400007],\n\t\t\t\t[88.11117597700007, 22.034857489000046],\n\t\t\t\t[88.08472741000003, 22.020697333000044],\n\t\t\t\t[88.04859459700003, 22.020738023000035],\n\t\t\t\t[88.04314212300005, 22.017279364000046],\n\t\t\t\t[88.04517662900008, 22.00653717700004],\n\t\t\t\t[88.04900149800005, 21.995428778000075],\n\t\t\t\t[88.05079186300003, 21.98501211100006],\n\t\t\t\t[88.04688561300003, 21.97601959800005],\n\t\t\t\t[88.03239993600005, 21.957180080000057],\n\t\t\t\t[87.98365319100003, 21.85419342700004],\n\t\t\t\t[87.97046959700003, 21.836493231000077],\n\t\t\t\t[87.95777428500003, 21.828924872000073],\n\t\t\t\t[87.94800866000003, 21.825384833000044],\n\t\t\t\t[87.90902754000007, 21.79881419500009],\n\t\t\t\t[87.90219160200007, 21.796820380000042],\n\t\t\t\t[87.89918053500003, 21.79482656500005],\n\t\t\t\t[87.89568118600005, 21.78937409100007],\n\t\t\t\t[87.89478600400008, 21.77875397300005],\n\t\t\t\t[87.89291425900007, 21.774318752000056],\n\t\t\t\t[87.86719811300003, 21.750799872000073],\n\t\t\t\t[87.83399498800003, 21.729315497000073],\n\t\t\t\t[87.75570722700007, 21.69171784100007],\n\t\t\t\t[87.70378665500004, 21.655503648000035],\n\t\t\t\t[87.68384850400008, 21.650132554000038],\n\t\t\t\t[87.64210045700008, 21.652085679000038],\n\t\t\t\t[87.62134850400008, 21.65062083500004],\n\t\t\t\t[87.47738691500007, 21.61359284100007],\n\t\t\t\t[87.46876061300003, 21.611395575000074],\n\t\t\t\t[87.40495853000004, 21.58665599200009],\n\t\t\t\t[87.34180748800003, 21.56240469000005],\n\t\t\t\t[87.29346764400003, 21.553656317000048],\n\t\t\t\t[87.25611412900008, 21.56199778900009],\n\t\t\t\t[87.24594160200007, 21.556586005000042],\n\t\t\t\t[87.23519941500007, 21.554510809000078],\n\t\t\t\t[87.21143639400003, 21.55459219000005],\n\t\t\t\t[87.20093834700003, 21.551988023000035],\n\t\t\t\t[87.11304772200003, 21.507961330000057],\n\t\t\t\t[87.06373131600003, 21.475002346000053],\n\t\t\t\t[86.91765384200005, 21.327378648000035],\n\t\t\t\t[86.86695397200003, 21.25604889500005],\n\t\t\t\t[86.83725019600007, 21.174709377000056],\n\t\t\t\t[86.84400475400008, 21.08222077000005],\n\t\t\t\t[86.95215905000003, 20.84910716400009],\n\t\t\t\t[86.96566816500007, 20.805975653000075],\n\t\t\t\t[86.95386803500003, 20.780585028000075],\n\t\t\t\t[86.93628991000003, 20.787502346000053],\n\t\t\t\t[86.91651451900003, 20.78807200700004],\n\t\t\t\t[86.87875410200007, 20.780585028000075],\n\t\t\t\t[86.88933353000004, 20.764471747000073],\n\t\t\t\t[86.91065514400003, 20.756415106000077],\n\t\t\t\t[86.95720462300005, 20.753241278000075],\n\t\t\t\t[86.97999108200008, 20.755560614000046],\n\t\t\t\t[86.98658287900008, 20.75185781500005],\n\t\t\t\t[86.99488366000003, 20.73895905200004],\n\t\t\t\t[87.00001061300003, 20.728216864000046],\n\t\t\t\t[87.00180097700007, 20.71898021000004],\n\t\t\t\t[86.99870853000004, 20.71112702000005],\n\t\t\t\t[86.98861738400007, 20.704250393000052],\n\t\t\t\t[86.97575931100005, 20.710679429000038],\n\t\t\t\t[86.96119225400008, 20.712836005000042],\n\t\t\t\t[86.94825280000003, 20.709051825000074],\n\t\t\t\t[86.94019616000003, 20.69798411700009],\n\t\t\t\t[86.95191491000003, 20.697007554000038],\n\t\t\t\t[86.96119225400008, 20.695054429000038],\n\t\t\t\t[86.96851647200003, 20.691148179000038],\n\t\t\t\t[86.97429446700005, 20.684393622000073],\n\t\t\t\t[86.98170006600003, 20.685370184000078],\n\t\t\t\t[86.98650149800005, 20.684393622000073],\n\t\t\t\t[86.99024498800003, 20.67999909100007],\n\t\t\t\t[86.99488366000003, 20.670721747000073],\n\t\t\t\t[87.01937910200007, 20.68036530200004],\n\t\t\t\t[87.03337649800005, 20.69017161700009],\n\t\t\t\t[87.04322350400008, 20.69798411700009],\n\t\t\t\t[87.02751712300005, 20.67967357000009],\n\t\t\t\t[87.00359134200005, 20.657049872000073],\n\t\t\t\t[86.97624759200005, 20.637884833000044],\n\t\t\t\t[86.92318769600007, 20.62173086100006],\n\t\t\t\t[86.77418053500003, 20.51194896000004],\n\t\t\t\t[86.75147545700008, 20.489162502000056],\n\t\t\t\t[86.73389733200008, 20.462225653000075],\n\t\t\t\t[86.72461998800003, 20.43195221600007],\n\t\t\t\t[86.72046959700003, 20.368475653000075],\n\t\t\t\t[86.74195397200003, 20.37954336100006],\n\t\t\t\t[86.75635826900003, 20.393744208000044],\n\t\t\t\t[86.76978600400008, 20.40070221600007],\n\t\t\t\t[86.78874759200005, 20.39012278900009],\n\t\t\t\t[86.78825931100005, 20.402818101000037],\n\t\t\t\t[86.78980553500003, 20.41469961100006],\n\t\t\t\t[86.79615319100003, 20.437323309000078],\n\t\t\t\t[86.80982506600003, 20.41510651200008],\n\t\t\t\t[86.79420006600003, 20.378159898000035],\n\t\t\t\t[86.76832116000003, 20.343451239000046],\n\t\t\t\t[86.75147545700008, 20.328070380000042],\n\t\t\t\t[86.73926842500003, 20.32420482000009],\n\t\t\t\t[86.71973717500003, 20.31509023600006],\n\t\t\t\t[86.70167076900003, 20.30377838700008],\n\t\t\t\t[86.69369550900007, 20.29393138200004],\n\t\t\t\t[86.70167076900003, 20.28465403900009],\n\t\t\t\t[86.71973717500003, 20.29173411700009],\n\t\t\t\t[86.75464928500003, 20.31443919500009],\n\t\t\t\t[86.71745853000004, 20.286932684000078],\n\t\t\t\t[86.62818444100003, 20.235256252000056],\n\t\t\t\t[86.58383222700007, 20.21820709800005],\n\t\t\t\t[86.53419030000003, 20.20612213700008],\n\t\t\t\t[86.51148522200003, 20.19745514500005],\n\t\t\t\t[86.49512780000003, 20.184068101000037],\n\t\t\t\t[86.49040774800005, 20.17405833500004],\n\t\t\t\t[86.47885175900007, 20.129339911000045],\n\t\t\t\t[86.46851647200003, 20.10927969000005],\n\t\t\t\t[86.46713300900007, 20.094671942000048],\n\t\t\t\t[86.41504967500003, 20.036322333000044],\n\t\t\t\t[86.39144941500007, 20.02020905200004],\n\t\t\t\t[86.39673912900008, 20.00995514500005],\n\t\t\t\t[86.40414472700007, 20.00263092700004],\n\t\t\t\t[86.41407311300003, 19.998846747000073],\n\t\t\t\t[86.42628014400003, 19.999172268000052],\n\t\t\t\t[86.39722741000003, 19.982855536000045],\n\t\t\t\t[86.34839928500003, 20.00885651200008],\n\t\t\t\t[86.27540123800003, 20.06736888200004],\n\t\t\t\t[86.23129316500007, 20.064886786000045],\n\t\t\t\t[86.20915774800005, 20.06663646000004],\n\t\t\t\t[86.19971764400003, 20.077948309000078],\n\t\t\t\t[86.19597415500004, 20.08030833500004],\n\t\t\t\t[86.17302493600005, 20.10219961100006],\n\t\t\t\t[86.16846764400003, 20.11318594000005],\n\t\t\t\t[86.16309655000003, 20.134833075000074],\n\t\t\t\t[86.15870201900003, 20.143133856000077],\n\t\t\t\t[86.15251712300005, 20.143133856000077],\n\t\t\t\t[86.14503014400003, 20.122015692000048],\n\t\t\t\t[86.15430748800003, 20.089992580000057],\n\t\t\t\t[86.15870201900003, 20.08104075700004],\n\t\t\t\t[86.16773522200003, 20.07294342700004],\n\t\t\t\t[86.18775475400008, 20.063666083000044],\n\t\t\t\t[86.21371504000007, 20.04242584800005],\n\t\t\t\t[86.23023522200003, 20.035305080000057],\n\t\t\t\t[86.26856530000003, 20.02643463700008],\n\t\t\t\t[86.27344811300003, 20.026190497000073],\n\t\t\t\t[86.28467858200008, 20.027492580000057],\n\t\t\t\t[86.28907311300003, 20.02643463700008],\n\t\t\t\t[86.29322350400008, 20.021429755000042],\n\t\t\t\t[86.29411868600005, 20.015692450000074],\n\t\t\t\t[86.29420006600003, 20.01040273600006],\n\t\t\t\t[86.29590905000003, 20.00657786700009],\n\t\t\t\t[86.30290774800005, 19.99909088700008],\n\t\t\t\t[86.30811608200008, 19.99209219000005],\n\t\t\t\t[86.31495201900003, 19.986883856000077],\n\t\t\t\t[86.32667076900003, 19.984849351000037],\n\t\t\t\t[86.34156334700003, 19.97988515800006],\n\t\t\t\t[86.35645592500003, 19.970404364000046],\n\t\t\t\t[86.37240644600007, 19.964992580000057],\n\t\t\t\t[86.26856530000003, 19.91034577000005],\n\t\t\t\t[86.11158287900008, 19.85569896000004],\n\t\t\t\t[86.08904056100005, 19.844224351000037],\n\t\t\t\t[86.07837975400008, 19.843573309000078],\n\t\t\t\t[86.06674238400007, 19.851996161000045],\n\t\t\t\t[86.05665123800003, 19.85687897300005],\n\t\t\t\t[86.04656009200005, 19.85252513200004],\n\t\t\t\t[86.03793379000007, 19.84528229400007],\n\t\t\t\t[86.03207441500007, 19.841498114000046],\n\t\t\t\t[86.01351972700007, 19.839056708000044],\n\t\t\t\t[85.88884524800005, 19.80296458500004],\n\t\t\t\t[85.84636478000004, 19.795843817000048],\n\t\t\t\t[85.80860436300003, 19.773382880000042],\n\t\t\t\t[85.78882897200003, 19.765692450000074],\n\t\t\t\t[85.77808678500003, 19.76463450700004],\n\t\t\t\t[85.74439537900008, 19.765692450000074],\n\t\t\t\t[85.73438561300003, 19.763617255000042],\n\t\t\t\t[85.71485436300003, 19.75421784100007],\n\t\t\t\t[85.68458092500003, 19.747748114000046],\n\t\t\t\t[85.62427819100003, 19.718573309000078],\n\t\t\t\t[85.62598717500003, 19.72288646000004],\n\t\t\t\t[85.63599694100003, 19.726629950000074],\n\t\t\t\t[85.63795006600003, 19.731634833000044],\n\t\t\t\t[85.61426842500003, 19.72793203300006],\n\t\t\t\t[85.54916425900007, 19.690619208000044],\n\t\t\t\t[85.48047936300003, 19.66632721600007],\n\t\t\t\t[85.45679772200003, 19.663316148000035],\n\t\t\t\t[85.44988040500004, 19.66669342700004],\n\t\t\t\t[85.44752037900008, 19.674627997000073],\n\t\t\t\t[85.44678795700008, 19.690619208000044],\n\t\t\t\t[85.44312584700003, 19.69245026200008],\n\t\t\t\t[85.43685957100007, 19.691351630000042],\n\t\t\t\t[85.43043053500003, 19.69171784100007],\n\t\t\t\t[85.42628014400003, 19.69745514500005],\n\t\t\t\t[85.42701256600003, 19.70408763200004],\n\t\t\t\t[85.43165123800003, 19.704901434000078],\n\t\t\t\t[85.43685957100007, 19.70465729400007],\n\t\t\t\t[85.43930097700007, 19.70799388200004],\n\t\t\t\t[85.45085696700005, 19.71629466400009],\n\t\t\t\t[85.47754967500003, 19.723863023000035],\n\t\t\t\t[85.52198326900003, 19.739081122000073],\n\t\t\t\t[85.52556399800005, 19.734035549000055],\n\t\t\t\t[85.52344811300003, 19.72870514500005],\n\t\t\t\t[85.51889082100007, 19.721584377000056],\n\t\t\t\t[85.51498457100007, 19.71112702000005],\n\t\t\t\t[85.55884850400008, 19.738104559000078],\n\t\t\t\t[85.57650800900007, 19.745835679000038],\n\t\t\t\t[85.56763756600003, 19.750799872000073],\n\t\t\t\t[85.56324303500003, 19.75690338700008],\n\t\t\t\t[85.56413821700005, 19.76439036700009],\n\t\t\t\t[85.57032311300003, 19.773179429000038],\n\t\t\t\t[85.56714928500003, 19.79165273600006],\n\t\t\t\t[85.57032311300003, 19.87563711100006],\n\t\t\t\t[85.55713951900003, 19.881781317000048],\n\t\t\t\t[85.51498457100007, 19.88930898600006],\n\t\t\t\t[85.47681725400008, 19.90102773600006],\n\t\t\t\t[85.46355228000004, 19.902899481000077],\n\t\t\t\t[85.44011478000004, 19.896226304000038],\n\t\t\t\t[85.41627037900008, 19.879787502000056],\n\t\t\t\t[85.37452233200008, 19.83779531500005],\n\t\t\t\t[85.31959069100003, 19.79364655200004],\n\t\t\t\t[85.30420983200008, 19.792669989000046],\n\t\t\t\t[85.29029381600003, 19.789943752000056],\n\t\t\t\t[85.27808678500003, 19.785589911000045],\n\t\t\t\t[85.26807701900003, 19.78001536700009],\n\t\t\t\t[85.24683678500003, 19.762640692000048],\n\t\t\t\t[85.22095787900008, 19.736029364000046],\n\t\t\t\t[85.20337975400008, 19.70726146000004],\n\t\t\t\t[85.20655358200008, 19.68378327000005],\n\t\t\t\t[85.18995201900003, 19.67096588700008],\n\t\t\t\t[85.17514082100007, 19.63690827000005],\n\t\t\t\t[85.16553795700008, 19.625799872000073],\n\t\t\t\t[85.15015709700003, 19.61347077000005],\n\t\t\t\t[85.14014733200008, 19.596584377000056],\n\t\t\t\t[85.13933353000004, 19.579779364000046],\n\t\t\t\t[85.15137780000003, 19.56777578300006],\n\t\t\t\t[85.15137780000003, 19.560288804000038],\n\t\t\t\t[85.13917076900003, 19.557074286000045],\n\t\t\t\t[85.12289472700007, 19.54901764500005],\n\t\t\t\t[85.10889733200008, 19.53896719000005],\n\t\t\t\t[85.10287519600007, 19.52960846600007],\n\t\t\t\t[85.10450280000003, 19.514878648000035],\n\t\t\t\t[85.10873457100007, 19.506781317000048],\n\t\t\t\t[85.11548912900008, 19.507473049000055],\n\t\t\t\t[85.12403405000003, 19.519354559000078],\n\t\t\t\t[85.12875410200007, 19.509507554000038],\n\t\t\t\t[85.13021894600007, 19.49872467700004],\n\t\t\t\t[85.12867272200003, 19.487982489000046],\n\t\t\t\t[85.12403405000003, 19.478338934000078],\n\t\t\t\t[85.13575280000003, 19.481594143000052],\n\t\t\t\t[85.14177493600005, 19.487127997000073],\n\t\t\t\t[85.14576256600003, 19.493475653000075],\n\t\t\t\t[85.15137780000003, 19.498846747000073],\n\t\t\t\t[85.16244550900007, 19.50348541900007],\n\t\t\t\t[85.17115319100003, 19.504461981000077],\n\t\t\t\t[85.17855879000007, 19.504299221000053],\n\t\t\t\t[85.18555748800003, 19.505682684000078],\n\t\t\t\t[85.20289147200003, 19.51715729400007],\n\t\t\t\t[85.20191491000003, 19.527085679000038],\n\t\t\t\t[85.19629967500003, 19.53847890800006],\n\t\t\t\t[85.19922936300003, 19.55410390800006],\n\t\t\t\t[85.20630944100003, 19.548000393000052],\n\t\t\t\t[85.21452884200005, 19.547267971000053],\n\t\t\t\t[85.22364342500003, 19.549953518000052],\n\t\t\t\t[85.23324629000007, 19.55410390800006],\n\t\t\t\t[85.20378665500004, 19.57050202000005],\n\t\t\t\t[85.19304446700005, 19.573919989000046],\n\t\t\t\t[85.19304446700005, 19.58079661700009],\n\t\t\t\t[85.21290123800003, 19.58112213700008],\n\t\t\t\t[85.22364342500003, 19.590236721000053],\n\t\t\t\t[85.23259524800005, 19.60154857000009],\n\t\t\t\t[85.24756920700008, 19.608710028000075],\n\t\t\t\t[85.24756920700008, 19.614935614000046],\n\t\t\t\t[85.24187259200005, 19.617010809000078],\n\t\t\t\t[85.23731530000003, 19.62055084800005],\n\t\t\t\t[85.23438561300003, 19.62567780200004],\n\t\t\t\t[85.23324629000007, 19.632554429000038],\n\t\t\t\t[85.23633873800003, 19.635321356000077],\n\t\t\t\t[85.24781334700003, 19.653143622000073],\n\t\t\t\t[85.24756920700008, 19.65648021000004],\n\t\t\t\t[85.26075280000003, 19.656073309000078],\n\t\t\t\t[85.30909264400003, 19.642238674000055],\n\t\t\t\t[85.35059655000003, 19.67763906500005],\n\t\t\t\t[85.36378014400003, 19.67804596600007],\n\t\t\t\t[85.37435957100007, 19.674709377000056],\n\t\t\t\t[85.38306725400008, 19.67609284100007],\n\t\t\t\t[85.39144941500007, 19.690619208000044],\n\t\t\t\t[85.39918053500003, 19.67914459800005],\n\t\t\t\t[85.40316816500007, 19.67129140800006],\n\t\t\t\t[85.40495853000004, 19.661932684000078],\n\t\t\t\t[85.40528405000003, 19.64594147300005],\n\t\t\t\t[85.40219160200007, 19.64398834800005],\n\t\t\t\t[85.38868248800003, 19.63825104400007],\n\t\t\t\t[85.38461347700007, 19.635972398000035],\n\t\t\t\t[85.38217207100007, 19.63108958500004],\n\t\t\t\t[85.38038170700008, 19.619614976000037],\n\t\t\t\t[85.37794030000003, 19.614935614000046],\n\t\t\t\t[85.36841881600003, 19.60809967700004],\n\t\t\t\t[85.35230553500003, 19.599432684000078],\n\t\t\t\t[85.33676191500007, 19.596096096000053],\n\t\t\t\t[85.33008873800003, 19.60496653900009],\n\t\t\t\t[85.32642662900008, 19.618801174000055],\n\t\t\t\t[85.31836998800003, 19.619533596000053],\n\t\t\t\t[85.31104576900003, 19.610500393000052],\n\t\t\t\t[85.30909264400003, 19.595038153000075],\n\t\t\t\t[85.30347741000003, 19.597479559000078],\n\t\t\t\t[85.29379316500007, 19.599554755000042],\n\t\t\t\t[85.28842207100007, 19.601263739000046],\n\t\t\t\t[85.30250084700003, 19.58665599200009],\n\t\t\t\t[85.30583743600005, 19.580145575000074],\n\t\t\t\t[85.30290774800005, 19.573919989000046],\n\t\t\t\t[85.33057701900003, 19.57640208500004],\n\t\t\t\t[85.57650800900007, 19.690619208000044],\n\t\t\t\t[85.54029381600003, 19.669582424000055],\n\t\t\t\t[85.46338951900003, 19.63104889500005],\n\t\t\t\t[85.38021894600007, 19.593817450000074],\n\t\t\t\t[85.33668053500003, 19.57518138200004],\n\t\t\t\t[85.28541100400008, 19.536281643000052],\n\t\t\t\t[85.24057050900007, 19.518052476000037],\n\t\t\t\t[85.18043053500003, 19.475002346000053],\n\t\t\t\t[85.06950931100005, 19.37213776200008],\n\t\t\t\t[84.99586022200003, 19.32330963700008],\n\t\t\t\t[84.87208092500003, 19.219875393000052],\n\t\t\t\t[84.79102623800003, 19.12059153900009],\n\t\t\t\t[84.77776126400005, 19.11619700700004],\n\t\t\t\t[84.77515709700003, 19.115301825000074],\n\t\t\t\t[84.76441491000003, 19.123439846000053],\n\t\t\t\t[84.75066165500004, 19.138373114000046],\n\t\t\t\t[84.73878014400003, 19.147650458000044],\n\t\t\t\t[84.73365319100003, 19.139146226000037],\n\t\t\t\t[84.73121178500003, 19.12881094000005],\n\t\t\t\t[84.72095787900008, 19.11424388200004],\n\t\t\t\t[84.71998131600003, 19.101629950000074],\n\t\t\t\t[84.72282962300005, 19.09601471600007],\n\t\t\t\t[84.73536217500003, 19.083197333000044],\n\t\t\t\t[84.74048912900008, 19.07367584800005],\n\t\t\t\t[84.75684655000003, 19.09764232000009],\n\t\t\t\t[84.76099694100003, 19.101629950000074],\n\t\t\t\t[84.76783287900008, 19.10179271000004],\n\t\t\t\t[84.77523847700007, 19.100490627000056],\n\t\t\t\t[84.78003991000003, 19.09707265800006],\n\t\t\t\t[84.77833092500003, 19.091009833000044],\n\t\t\t\t[84.75114993600005, 19.053900458000044],\n\t\t\t\t[84.74105879000007, 19.028143622000073],\n\t\t\t\t[84.69947350400008, 18.977484442000048],\n\t\t\t\t[84.67953535200007, 18.945705471000053],\n\t\t\t\t[84.66504967500003, 18.930121161000045],\n\t\t\t\t[84.63086998800003, 18.915716864000046],\n\t\t\t\t[84.54786217500003, 18.796087958000044],\n\t\t\t\t[84.54184004000007, 18.775783596000053],\n\t\t\t\t[84.44825280000003, 18.68065013200004],\n\t\t\t\t[84.43718509200005, 18.66278717700004],\n\t\t\t\t[84.43262780000003, 18.645697333000044],\n\t\t\t\t[84.42367597700007, 18.636460679000038],\n\t\t\t\t[84.37045332100007, 18.601304429000038],\n\t\t\t\t[84.34945722700007, 18.56981028900009],\n\t\t\t\t[84.33285566500007, 18.55369700700004],\n\t\t\t\t[84.31226647200003, 18.546698309000078],\n\t\t\t\t[84.30632571700005, 18.54368724200009],\n\t\t\t\t[84.28858483200008, 18.529771226000037],\n\t\t\t\t[84.28174889400003, 18.52558014500005],\n\t\t\t\t[84.27271569100003, 18.524318752000056],\n\t\t\t\t[84.25001061300003, 18.524237372000073],\n\t\t\t\t[84.24691816500007, 18.52558014500005],\n\t\t\t\t[84.23764082100007, 18.510931708000044],\n\t\t\t\t[84.24935957100007, 18.501654364000046],\n\t\t\t\t[84.27100670700008, 18.50018952000005],\n\t\t\t\t[84.29769941500007, 18.51630280200004],\n\t\t\t\t[84.32618248800003, 18.53742096600007],\n\t\t\t\t[84.34994550900007, 18.55292389500005],\n\t\t\t\t[84.33122806100005, 18.53864166900007],\n\t\t\t\t[84.28793379000007, 18.50576406500005],\n\t\t\t\t[84.24008222700007, 18.460760809000078],\n\t\t\t\t[84.23047936300003, 18.446234442000048],\n\t\t\t\t[84.18832441500007, 18.418036200000074],\n\t\t\t\t[84.17448978000004, 18.39984772300005],\n\t\t\t\t[84.15284264400003, 18.383612372000073],\n\t\t\t\t[84.14389082100007, 18.374823309000078],\n\t\t\t\t[84.13892662900008, 18.364162502000056],\n\t\t\t\t[84.13648522200003, 18.353583075000074],\n\t\t\t\t[84.13282311300003, 18.343410549000055],\n\t\t\t\t[84.12403405000003, 18.333807684000078],\n\t\t\t\t[84.11312910200007, 18.29828522300005],\n\t\t\t\t[84.07740319100003, 18.271551825000074],\n\t\t\t\t[83.77515709700003, 18.139593817000048],\n\t\t\t\t[83.61394290500004, 18.04515208500004],\n\t\t\t\t[83.58228600400008, 18.01911041900007],\n\t\t\t\t[83.57618248800003, 18.00975169500009],\n\t\t\t\t[83.56283613400007, 17.98309967700004],\n\t\t\t\t[83.55836022200003, 17.97752513200004],\n\t\t\t\t[83.55665123800003, 17.973456122000073],\n\t\t\t\t[83.53891035200007, 17.956284898000092],\n\t\t\t\t[83.53443444100003, 17.95331452000005],\n\t\t\t\t[83.52613366000003, 17.942531643000052],\n\t\t\t\t[83.48658287900008, 17.916896877000056],\n\t\t\t\t[83.47291100400008, 17.902492580000057],\n\t\t\t\t[83.46558678500003, 17.902492580000057],\n\t\t\t\t[83.46290123800003, 17.90851471600007],\n\t\t\t\t[83.45191491000003, 17.92291901200008],\n\t\t\t\t[83.44898522200003, 17.90688711100006],\n\t\t\t\t[83.45240319100003, 17.88621653900009],\n\t\t\t\t[83.45297285200007, 17.868475653000075],\n\t\t\t\t[83.43116295700008, 17.85423411700009],\n\t\t\t\t[83.42530358200008, 17.83860911700009],\n\t\t\t\t[83.41773522200003, 17.80621979400007],\n\t\t\t\t[83.40235436300003, 17.784491278000075],\n\t\t\t\t[83.34131920700008, 17.71743398600006],\n\t\t\t\t[83.31910241000003, 17.703192450000074],\n\t\t\t\t[83.31324303500003, 17.70115794500009],\n\t\t\t\t[83.30437259200005, 17.692206122000073],\n\t\t\t\t[83.29859459700003, 17.69013092700004],\n\t\t\t\t[83.29273522200003, 17.691148179000038],\n\t\t\t\t[83.28956139400003, 17.69326406500005],\n\t\t\t\t[83.28744550900007, 17.695379950000074],\n\t\t\t\t[83.28467858200008, 17.69635651200008],\n\t\t\t\t[83.28223717500003, 17.699286200000074],\n\t\t\t\t[83.28028405000003, 17.705959377000056],\n\t\t\t\t[83.27637780000003, 17.71308014500005],\n\t\t\t\t[83.26823978000004, 17.71747467700004],\n\t\t\t\t[83.24691816500007, 17.71625397300005],\n\t\t\t\t[83.24203535200007, 17.70652903900009],\n\t\t\t\t[83.24927819100003, 17.695379950000074],\n\t\t\t\t[83.27198326900003, 17.68813711100006],\n\t\t\t\t[83.29249108200008, 17.677476304000038],\n\t\t\t\t[83.29859459700003, 17.672796942000048],\n\t\t\t\t[83.29908287900008, 17.66429271000004],\n\t\t\t\t[83.28923587300005, 17.65761953300006],\n\t\t\t\t[83.26823978000004, 17.648586330000057],\n\t\t\t\t[83.25513756600003, 17.63812897300005],\n\t\t\t\t[83.24691816500007, 17.63422272300005],\n\t\t\t\t[83.21290123800003, 17.634914455000057],\n\t\t\t\t[83.23389733200008, 17.60773346600007],\n\t\t\t\t[83.23894290500004, 17.592962958000044],\n\t\t\t\t[83.22291100400008, 17.586493231000077],\n\t\t\t\t[83.20923912900008, 17.583685614000046],\n\t\t\t\t[83.19613691500007, 17.57680898600006],\n\t\t\t\t[83.17139733200008, 17.559800523000092],\n\t\t\t\t[83.08822675900007, 17.53070709800005],\n\t\t\t\t[83.05323326900003, 17.50649648600006],\n\t\t\t\t[83.01986738400007, 17.49091217700004],\n\t\t\t\t[82.99642988400007, 17.473456122000073],\n\t\t\t\t[82.97584069100003, 17.453680731000077],\n\t\t\t\t[82.96957441500007, 17.450100002000056],\n\t\t\t\t[82.95281009200005, 17.44594961100006],\n\t\t\t\t[82.94548587300005, 17.443101304000038],\n\t\t\t\t[82.89682050900007, 17.409328518000052],\n\t\t\t\t[82.88868248800003, 17.41014232000009],\n\t\t\t\t[82.88331139400003, 17.42206452000005],\n\t\t\t\t[82.86915123800003, 17.414007880000042],\n\t\t\t\t[82.85425866000008, 17.402818101000037],\n\t\t\t\t[82.83765709700003, 17.39276764500005],\n\t\t\t\t[82.79639733200008, 17.38304271000004],\n\t\t\t\t[82.75814863400007, 17.359198309000078],\n\t\t\t\t[82.71851647200003, 17.34861888200004],\n\t\t\t\t[82.47486412900008, 17.205959377000056],\n\t\t\t\t[82.45191491000008, 17.182440497000073],\n\t\t\t\t[82.43506920700008, 17.15379466400009],\n\t\t\t\t[82.42286217500003, 17.139960028000075],\n\t\t\t\t[82.38770592500003, 17.12693919500009],\n\t\t\t\t[82.37037194100003, 17.11009349200009],\n\t\t\t\t[82.34205162900008, 17.073187567000048],\n\t\t\t\t[82.31169681100005, 17.046616929000038],\n\t\t\t\t[82.29932701900003, 17.03034088700008],\n\t\t\t\t[82.29167728000004, 16.998439846000053],\n\t\t\t\t[82.25269616000008, 16.92918528900009],\n\t\t\t\t[82.25074303500008, 16.907863674000055],\n\t\t\t\t[82.25513756600003, 16.885321356000077],\n\t\t\t\t[82.26791425900007, 16.86749909100007],\n\t\t\t\t[82.29835045700008, 16.85846588700008],\n\t\t\t\t[82.30355879000007, 16.85419342700004],\n\t\t\t\t[82.30811608200008, 16.849554755000042],\n\t\t\t\t[82.31421959700003, 16.846625067000048],\n\t\t\t\t[82.31959069100003, 16.84723541900007],\n\t\t\t\t[82.32715905000003, 16.849432684000078],\n\t\t\t\t[82.33334394600007, 16.852118231000077],\n\t\t\t\t[82.33464603000004, 16.854071356000077],\n\t\t\t\t[82.35206139400003, 16.845404364000046],\n\t\t\t\t[82.36247806100005, 16.859076239000046],\n\t\t\t\t[82.36117597700007, 16.89134349200009],\n\t\t\t\t[82.35743248800003, 16.92487213700008],\n\t\t\t\t[82.34888756600003, 16.95648834800005],\n\t\t\t\t[82.36117597700007, 16.936021226000037],\n\t\t\t\t[82.36654707100007, 16.908636786000045],\n\t\t\t\t[82.36744225400008, 16.860296942000048],\n\t\t\t\t[82.36557050900007, 16.81159088700008],\n\t\t\t\t[82.35206139400003, 16.76129791900007],\n\t\t\t\t[82.34595787900008, 16.70612213700008],\n\t\t\t\t[82.33814537900008, 16.67841217700004],\n\t\t\t\t[82.31421959700003, 16.628159898000092],\n\t\t\t\t[82.31234785200007, 16.61985911700009],\n\t\t\t\t[82.31381269600007, 16.612982489000046],\n\t\t\t\t[82.31283613400007, 16.60814036700009],\n\t\t\t\t[82.30396569100003, 16.60643138200004],\n\t\t\t\t[82.29932701900003, 16.61009349200009],\n\t\t\t\t[82.29379316500007, 16.62563711100006],\n\t\t\t\t[82.28687584700003, 16.628159898000092],\n\t\t\t\t[82.28093509200005, 16.620835679000038],\n\t\t\t\t[82.28549238400007, 16.60651276200008],\n\t\t\t\t[82.29607181100005, 16.591009833000044],\n\t\t\t\t[82.30738366000008, 16.579779364000046],\n\t\t\t\t[82.25904381600003, 16.56549713700008],\n\t\t\t\t[82.20346113400007, 16.51268138200004],\n\t\t\t\t[82.18824303500008, 16.504055080000057],\n\t\t\t\t[82.17302493600005, 16.500921942000048],\n\t\t\t\t[82.12289472700007, 16.477362372000073],\n\t\t\t\t[82.09066816500007, 16.454779364000046],\n\t\t\t\t[82.06861412900008, 16.444281317000048],\n\t\t\t\t[82.03736412900008, 16.447658596000053],\n\t\t\t\t[82.02271569100003, 16.43573639500005],\n\t\t\t\t[82.00782311300003, 16.419582424000055],\n\t\t\t\t[81.99268639400003, 16.40843333500004],\n\t\t\t\t[81.98170006600003, 16.407863674000055],\n\t\t\t\t[81.96794681100005, 16.40892161700009],\n\t\t\t\t[81.95622806100005, 16.407171942000048],\n\t\t\t\t[81.94809004000007, 16.391546942000048],\n\t\t\t\t[81.94076582100007, 16.388373114000046],\n\t\t\t\t[81.89991295700008, 16.38580963700008],\n\t\t\t\t[81.88054446700005, 16.381659247000073],\n\t\t\t\t[81.86166425900007, 16.375392971000053],\n\t\t\t\t[81.78321373800003, 16.33856842700004],\n\t\t\t\t[81.76295006600003, 16.32257721600007],\n\t\t\t\t[81.71762129000007, 16.312201239000046],\n\t\t\t\t[81.71159915500004, 16.312201239000046],\n\t\t\t\t[81.69605553500008, 16.314927476000037],\n\t\t\t\t[81.67693118600005, 16.327378648000092],\n\t\t\t\t[81.65626061300003, 16.33734772300005],\n\t\t\t\t[81.63640384200005, 16.33270905200004],\n\t\t\t\t[81.62094160200007, 16.339504299000055],\n\t\t\t\t[81.58497155000003, 16.34210846600007],\n\t\t\t\t[81.56812584700003, 16.34638092700004],\n\t\t\t\t[81.57390384200005, 16.358343817000048],\n\t\t\t\t[81.56918379000007, 16.367580471000053],\n\t\t\t\t[81.55697675900007, 16.37303294500009],\n\t\t\t\t[81.54021243600005, 16.37368398600006],\n\t\t\t\t[81.54908287900008, 16.352362372000073],\n\t\t\t\t[81.53598066500007, 16.350043036000045],\n\t\t\t\t[81.49586022200003, 16.360663153000075],\n\t\t\t\t[81.47535241000008, 16.358628648000092],\n\t\t\t\t[81.41667728000004, 16.34015534100007],\n\t\t\t\t[81.42115319100003, 16.35097890800006],\n\t\t\t\t[81.42611738400007, 16.358710028000075],\n\t\t\t\t[81.42823326900003, 16.365668036000045],\n\t\t\t\t[81.42408287900008, 16.37368398600006],\n\t\t\t\t[81.41138756600003, 16.382513739000046],\n\t\t\t\t[81.39893639400003, 16.382635809000078],\n\t\t\t\t[81.38697350400008, 16.376776434000078],\n\t\t\t\t[81.37574303500008, 16.36749909100007],\n\t\t\t\t[81.35962975400008, 16.374335028000075],\n\t\t\t\t[81.34522545700008, 16.373602606000077],\n\t\t\t\t[81.33155358200008, 16.36977773600006],\n\t\t\t\t[81.31739342500003, 16.36749909100007],\n\t\t\t\t[81.25961347700007, 16.33270905200004],\n\t\t\t\t[81.24854576900003, 16.320135809000078],\n\t\t\t\t[81.24984785200007, 16.311021226000037],\n\t\t\t\t[81.25603274800005, 16.30182526200008],\n\t\t\t\t[81.25961347700007, 16.28864166900007],\n\t\t\t\t[81.25416100400008, 16.271307684000078],\n\t\t\t\t[81.23031660200007, 16.24359772300005],\n\t\t\t\t[81.21851647200003, 16.19944896000004],\n\t\t\t\t[81.19027754000007, 16.13886139500005],\n\t\t\t\t[81.18002363400007, 16.086737372000073],\n\t\t\t\t[81.16195722700007, 16.057074286000045],\n\t\t\t\t[81.15601647200003, 16.03851959800005],\n\t\t\t\t[81.15544681100005, 15.985500393000052],\n\t\t\t\t[81.14975019600007, 15.969631252000056],\n\t\t\t\t[81.13510175900007, 15.966498114000046],\n\t\t\t\t[81.08822675900007, 15.921210028000075],\n\t\t\t\t[81.04330488400007, 15.894110419000071],\n\t\t\t\t[81.02686608200008, 15.88084544500009],\n\t\t\t\t[80.99887129000007, 15.84674713700008],\n\t\t\t\t[80.99838300900007, 15.83470286700009],\n\t\t\t\t[81.00294030000003, 15.82526276200008],\n\t\t\t\t[81.00879967500003, 15.81781647300005],\n\t\t\t\t[81.01254316500007, 15.81195709800005],\n\t\t\t\t[81.01921634200005, 15.792385158000059],\n\t\t\t\t[81.01905358200008, 15.78416575700004],\n\t\t\t\t[81.01254316500007, 15.777818101000037],\n\t\t\t\t[81.00473066500007, 15.778509833000044],\n\t\t\t\t[80.99586022200003, 15.784328518000052],\n\t\t\t\t[80.98829186300003, 15.791205145000049],\n\t\t\t\t[80.97901451900003, 15.803412177000041],\n\t\t\t\t[80.94947350400008, 15.827866929000038],\n\t\t\t\t[80.94068444100003, 15.83299388200004],\n\t\t\t\t[80.92164147200003, 15.83860911700009],\n\t\t\t\t[80.91000410200007, 15.852687893000052],\n\t\t\t\t[80.90430748800003, 15.871283270000049],\n\t\t\t\t[80.90267988400007, 15.890814520000049],\n\t\t\t\t[80.91016686300003, 15.96588776200008],\n\t\t\t\t[80.90894616000008, 15.98346588700008],\n\t\t\t\t[80.90601647200003, 15.999823309000078],\n\t\t\t\t[80.89649498800003, 16.031073309000078],\n\t\t\t\t[80.89226321700005, 16.02094147300005],\n\t\t\t\t[80.89649498800003, 16.010565497000073],\n\t\t\t\t[80.88900800900007, 16.003729559000078],\n\t\t\t\t[80.88575280000003, 16.008693752000056],\n\t\t\t\t[80.88282311300003, 16.011460679000038],\n\t\t\t\t[80.87533613400007, 16.017401434000078],\n\t\t\t\t[80.89128665500004, 15.978257554000038],\n\t\t\t\t[80.89576256600003, 15.936021226000037],\n\t\t\t\t[80.89014733200008, 15.89524974200009],\n\t\t\t\t[80.85572350400008, 15.822699286000045],\n\t\t\t\t[80.83025149800005, 15.747626044000071],\n\t\t\t\t[80.82007897200003, 15.72687409100007],\n\t\t\t\t[80.80713951900003, 15.716376044000071],\n\t\t\t\t[80.80836022200003, 15.803941148000092],\n\t\t\t\t[80.80274498800003, 15.84243398600006],\n\t\t\t\t[80.77613366000008, 15.884263414000088],\n\t\t\t\t[80.76010175900007, 15.892971096000053],\n\t\t\t\t[80.73633873800003, 15.897609768000052],\n\t\t\t\t[80.69044030000003, 15.90070221600007],\n\t\t\t\t[80.68246504000007, 15.903265692000048],\n\t\t\t\t[80.67628014400003, 15.907171942000048],\n\t\t\t\t[80.67017662900008, 15.907700914000088],\n\t\t\t\t[80.66309655000003, 15.90070221600007],\n\t\t\t\t[80.66041100400008, 15.893947658000059],\n\t\t\t\t[80.66285241000008, 15.889349677000041],\n\t\t\t\t[80.61841881600003, 15.88768138200004],\n\t\t\t\t[80.60010826900003, 15.882228908000059],\n\t\t\t\t[80.58432050900007, 15.872544664000088],\n\t\t\t\t[80.57113691500007, 15.868719794000071],\n\t\t\t\t[80.56072024800005, 15.88084544500009],\n\t\t\t\t[80.55388431100005, 15.88084544500009],\n\t\t\t\t[80.54167728000004, 15.868068752000056],\n\t\t\t\t[80.52588951900003, 15.856919664000088],\n\t\t\t\t[80.49187259200005, 15.839260158000059],\n\t\t\t\t[80.48267662900008, 15.836411851000037],\n\t\t\t\t[80.47559655000003, 15.83592357000009],\n\t\t\t\t[80.46908613400007, 15.834662177000041],\n\t\t\t\t[80.46143639400003, 15.829657294000071],\n\t\t\t\t[80.44548587300005, 15.814398505000042],\n\t\t\t\t[80.43628991000008, 15.808294989000046],\n\t\t\t\t[80.39332116000008, 15.797023830000057],\n\t\t\t\t[80.35962975400008, 15.775824286000045],\n\t\t\t\t[80.27963300900007, 15.700669664000088],\n\t\t\t\t[80.26319420700008, 15.67454661700009],\n\t\t\t\t[80.21949303500008, 15.56745026200008],\n\t\t\t\t[80.21745853000004, 15.548163153000075],\n\t\t\t\t[80.20134524800005, 15.51829661700009],\n\t\t\t\t[80.19760175900007, 15.503078518000052],\n\t\t\t\t[80.21119225400008, 15.496649481000077],\n\t\t\t\t[80.20045006600003, 15.482163804000038],\n\t\t\t\t[80.18384850400008, 15.452297268000052],\n\t\t\t\t[80.17286217500003, 15.438299872000073],\n\t\t\t\t[80.14031009200005, 15.406398830000057],\n\t\t\t\t[80.12680097700007, 15.38812897300005],\n\t\t\t\t[80.12126712300005, 15.370021877000056],\n\t\t\t\t[80.09058678500008, 15.304877020000049],\n\t\t\t\t[80.09253991000008, 15.296576239000046],\n\t\t\t\t[80.08236738400007, 15.20408763200004],\n\t\t\t\t[80.05298912900008, 15.092596747000073],\n\t\t\t\t[80.05453535200007, 15.014146226000037],\n\t\t\t\t[80.06153405000003, 14.974676825000074],\n\t\t\t\t[80.07341556100005, 14.94204336100006],\n\t\t\t\t[80.07300866000008, 14.92055898600006],\n\t\t\t\t[80.10515384200005, 14.763861395000049],\n\t\t\t\t[80.10816491000008, 14.714341539000088],\n\t\t\t\t[80.11068769600007, 14.704779364000046],\n\t\t\t\t[80.11695397200003, 14.698146877000056],\n\t\t\t\t[80.12818444100003, 14.68846263200004],\n\t\t\t\t[80.15186608200008, 14.672796942000048],\n\t\t\t\t[80.15984134200005, 14.662665106000077],\n\t\t\t\t[80.16635175900007, 14.628159898000092],\n\t\t\t\t[80.17359459700003, 14.616522528000075],\n\t\t\t\t[80.17847741000008, 14.60578034100007],\n\t\t\t\t[80.17595462300005, 14.592962958000044],\n\t\t\t\t[80.16968834700003, 14.58584219000005],\n\t\t\t\t[80.16089928500008, 14.579820054000038],\n\t\t\t\t[80.14185631600003, 14.571234442000048],\n\t\t\t\t[80.14918053500008, 14.565008856000077],\n\t\t\t\t[80.15935306100005, 14.565741278000075],\n\t\t\t\t[80.18327884200005, 14.571112372000073],\n\t\t\t\t[80.19019616000008, 14.571234442000048],\n\t\t\t\t[80.19695071700005, 14.565008856000077],\n\t\t\t\t[80.19605553500008, 14.559027411000045],\n\t\t\t\t[80.19239342500003, 14.553208726000037],\n\t\t\t\t[80.19019616000008, 14.54759349200009],\n\t\t\t\t[80.18824303500008, 14.52570221600007],\n\t\t\t\t[80.17595462300005, 14.46873607000009],\n\t\t\t\t[80.17872155000003, 14.38939036700009],\n\t\t\t\t[80.17497806100005, 14.344549872000073],\n\t\t\t\t[80.15943444100003, 14.324774481000077],\n\t\t\t\t[80.13705488400007, 14.269924221000053],\n\t\t\t\t[80.12818444100003, 14.256537177000041],\n\t\t\t\t[80.09791100400008, 14.254299221000053],\n\t\t\t\t[80.08716881600003, 14.25031159100007],\n\t\t\t\t[80.07178795700008, 14.232245184000078],\n\t\t\t\t[80.07007897200003, 14.229193427000041],\n\t\t\t\t[80.05502363400007, 14.221584377000056],\n\t\t\t\t[80.04664147200003, 14.206610419000071],\n\t\t\t\t[80.05062910200007, 14.196112372000073],\n\t\t\t\t[80.07349694100003, 14.201849677000041],\n\t\t\t\t[80.09099368600005, 14.216742255000042],\n\t\t\t\t[80.10661868600005, 14.234035549000055],\n\t\t\t\t[80.12110436300003, 14.242010809000078],\n\t\t\t\t[80.13559004000007, 14.229193427000041],\n\t\t\t\t[80.12338300900007, 14.193508205000057],\n\t\t\t\t[80.12582441500007, 14.148504950000074],\n\t\t\t\t[80.14966881600003, 14.027736721000053],\n\t\t\t\t[80.159605204927, 14]\n\t\t\t]\n\t\t]\n\t},\n\t\"bangladesh\": {\n\t\t\"stop\": 0.897488737517874,\n\t\t\"anchor\": [89.83003108960874, 23.720784795521794],\n\t\t\"border\": [\n\t\t\t[\n\t\t\t\t[92.57587854000013, 21.977574362000027],\n\t\t\t\t[92.59024458800008, 21.91716461200012],\n\t\t\t\t[92.59303511600012, 21.886933899000027],\n\t\t\t\t[92.57556848200005, 21.73397166000005],\n\t\t\t\t[92.59024458800008, 21.49553660100007],\n\t\t\t\t[92.59272505700005, 21.470163472000067],\n\t\t\t\t[92.60326704900007, 21.42008901000007],\n\t\t\t\t[92.63923384600008, 21.3186998500001],\n\t\t\t\t[92.64103990600012, 21.30858591800002],\n\t\t\t\t[92.64285119700003, 21.298442688000094],\n\t\t\t\t[92.63375614400007, 21.28221628900009],\n\t\t\t\t[92.61432580600007, 21.26314768500002],\n\t\t\t\t[92.59086470600005, 21.248884990000036],\n\t\t\t\t[92.57060754400004, 21.247283020000012],\n\t\t\t\t[92.55872196500007, 21.259840393000033],\n\t\t\t\t[92.55159061700004, 21.28051096600005],\n\t\t\t\t[92.54394250500008, 21.320921937000023],\n\t\t\t\t[92.52451216700007, 21.361126201000033],\n\t\t\t\t[92.49867395000007, 21.366603902000023],\n\t\t\t\t[92.46539432800012, 21.35983429],\n\t\t\t\t[92.42312300700013, 21.363658345000132],\n\t\t\t\t[92.40028202400003, 21.370996400000124],\n\t\t\t\t[92.38963667800004, 21.37652577800013],\n\t\t\t\t[92.38116174400005, 21.384794006000064],\n\t\t\t\t[92.37423710100006, 21.40231231800003],\n\t\t\t\t[92.37217004400003, 21.419055481000086],\n\t\t\t\t[92.36793257700003, 21.435436910000035],\n\t\t\t\t[92.35470341000007, 21.451818340000088],\n\t\t\t\t[92.32266402200014, 21.46189524300003],\n\t\t\t\t[92.2845268150001, 21.419055481000086],\n\t\t\t\t[92.25290083800007, 21.419520569000028],\n\t\t\t\t[92.23626102800006, 21.41709177700004],\n\t\t\t\t[92.22509891700014, 21.3974547320001],\n\t\t\t\t[92.21155969200004, 21.35487335200004],\n\t\t\t\t[92.1836544190001, 21.317201233],\n\t\t\t\t[92.17828007100013, 21.299734599000075],\n\t\t\t\t[92.17807336400006, 21.28014923100004],\n\t\t\t\t[92.18520471200003, 21.240410055000055],\n\t\t\t\t[92.18396447700007, 21.220876364000034],\n\t\t\t\t[92.17838342300007, 21.191265767000075],\n\t\t\t\t[92.17497277900003, 21.175607809000027],\n\t\t\t\t[92.18076053900012, 21.157882793000013],\n\t\t\t\t[92.18830529800005, 21.144085185000066],\n\t\t\t\t[92.21176639800012, 21.12351796500009],\n\t\t\t\t[92.21838098200004, 21.108635152000133],\n\t\t\t\t[92.22427209500012, 21.09318389900004],\n\t\t\t\t[92.26514733200008, 21.061102606000077],\n\t\t\t\t[92.25855553500003, 21.02252838700008],\n\t\t\t\t[92.25709069100003, 20.98110586100006],\n\t\t\t\t[92.26148522200003, 20.940252997000073],\n\t\t\t\t[92.27198326900003, 20.903509833000044],\n\t\t\t\t[92.30062910200007, 20.86237213700008],\n\t\t\t\t[92.30543053500003, 20.851955471000053],\n\t\t\t\t[92.30762780000003, 20.833197333000044],\n\t\t\t\t[92.32593834700003, 20.780585028000075],\n\t\t\t\t[92.33326256600003, 20.767726955000057],\n\t\t\t\t[92.33627363400007, 20.757147528000075],\n\t\t\t\t[92.33399498800003, 20.74640534100007],\n\t\t\t\t[92.32553144600007, 20.738714911000045],\n\t\t\t\t[92.31934655000003, 20.742010809000078],\n\t\t\t\t[92.31421959700003, 20.749253648000035],\n\t\t\t\t[92.30909264400003, 20.753241278000075],\n\t\t\t\t[92.30103600400008, 20.762274481000077],\n\t\t\t\t[92.27808678500003, 20.814113674000055],\n\t\t\t\t[92.20972741000003, 20.930812893000052],\n\t\t\t\t[92.19288170700008, 20.99567291900007],\n\t\t\t\t[92.18628991000003, 21.00584544500009],\n\t\t\t\t[92.13412519600007, 21.04751211100006],\n\t\t\t\t[92.12435957100007, 21.06045156500005],\n\t\t\t\t[92.10808353000004, 21.089911200000074],\n\t\t\t\t[92.09685306100005, 21.105861721000053],\n\t\t\t\t[92.05250084700003, 21.154771226000037],\n\t\t\t\t[92.04542076900003, 21.17096588700008],\n\t\t\t\t[92.04395592500003, 21.19204336100006],\n\t\t\t\t[92.05225670700008, 21.256659247000073],\n\t\t\t\t[92.05046634200005, 21.280462958000044],\n\t\t\t\t[92.04525800900007, 21.29954661700009],\n\t\t\t\t[91.98975670700008, 21.394232489000046],\n\t\t\t\t[91.98047936300003, 21.40375397300005],\n\t\t\t\t[91.96941165500004, 21.40961334800005],\n\t\t\t\t[91.95972741000003, 21.423976955000057],\n\t\t\t\t[91.95297285200007, 21.441839911000045],\n\t\t\t\t[91.94971764400003, 21.45840078300006],\n\t\t\t\t[91.95590254000007, 21.45840078300006],\n\t\t\t\t[91.95801842500003, 21.455023505000042],\n\t\t\t\t[91.95883222700007, 21.454413153000075],\n\t\t\t\t[91.96013431100005, 21.454250393000052],\n\t\t\t\t[91.96338951900003, 21.45213450700004],\n\t\t\t\t[91.97087649800005, 21.470038153000075],\n\t\t\t\t[91.98292076900003, 21.488836981000077],\n\t\t\t\t[91.99903405000003, 21.49949778900009],\n\t\t\t\t[92.01791425900007, 21.493109442000048],\n\t\t\t\t[92.00538170700008, 21.504299221000053],\n\t\t\t\t[91.99537194100003, 21.522609768000052],\n\t\t\t\t[91.98975670700008, 21.543402411000045],\n\t\t\t\t[91.99000084700003, 21.56199778900009],\n\t\t\t\t[91.99854576900003, 21.573187567000048],\n\t\t\t\t[92.01246178500003, 21.58539459800005],\n\t\t\t\t[92.02214603000004, 21.599351304000038],\n\t\t\t\t[92.01791425900007, 21.616034247000073],\n\t\t\t\t[92.03296959700003, 21.63300202000005],\n\t\t\t\t[92.03581790500004, 21.640448309000078],\n\t\t\t\t[92.03174889400003, 21.650132554000038],\n\t\t\t\t[92.03777103000004, 21.65957265800006],\n\t\t\t\t[92.03589928500003, 21.66815827000005],\n\t\t\t\t[92.02857506600003, 21.67479075700004],\n\t\t\t\t[92.02279707100007, 21.67682526200008],\n\t\t\t\t[92.02556399800005, 21.687241929000038],\n\t\t\t\t[92.02930748800003, 21.696234442000048],\n\t\t\t\t[92.02930748800003, 21.704901434000078],\n\t\t\t\t[92.02540123800003, 21.712836005000042],\n\t\t\t\t[92.02393639400003, 21.70465729400007],\n\t\t\t\t[92.02214603000004, 21.701564846000053],\n\t\t\t\t[92.01791425900007, 21.698553778000075],\n\t\t\t\t[92.02540123800003, 21.698553778000075],\n\t\t\t\t[92.01238040500004, 21.664211330000057],\n\t\t\t\t[92.00074303500003, 21.64980703300006],\n\t\t\t\t[91.98389733200008, 21.650132554000038],\n\t\t\t\t[91.97608483200008, 21.662054755000042],\n\t\t\t\t[91.97885175900007, 21.67772044500009],\n\t\t\t\t[91.98422285200007, 21.693508205000057],\n\t\t\t\t[91.98389733200008, 21.70538971600007],\n\t\t\t\t[91.97706139400003, 21.70538971600007],\n\t\t\t\t[91.97193444100003, 21.68821849200009],\n\t\t\t\t[91.96265709700003, 21.689520575000074],\n\t\t\t\t[91.95362389400003, 21.70140208500004],\n\t\t\t\t[91.94971764400003, 21.715969143000052],\n\t\t\t\t[91.95297285200007, 21.738348700000074],\n\t\t\t\t[91.96192467500003, 21.743841864000046],\n\t\t\t\t[91.97478274800005, 21.746486721000053],\n\t\t\t\t[91.99000084700003, 21.75999583500004],\n\t\t\t\t[91.98389733200008, 21.766831773000035],\n\t\t\t\t[91.96729576900003, 21.75543854400007],\n\t\t\t\t[91.96029707100007, 21.763820705000057],\n\t\t\t\t[91.96656334700003, 21.77887604400007],\n\t\t\t\t[91.99000084700003, 21.787909247000073],\n\t\t\t\t[91.99000084700003, 21.79482656500005],\n\t\t\t\t[91.94369550900007, 21.791408596000053],\n\t\t\t\t[91.92408287900008, 21.785223700000074],\n\t\t\t\t[91.90870201900003, 21.78115469000005],\n\t\t\t\t[91.89926191500007, 21.789496161000045],\n\t\t\t\t[91.90088951900003, 21.813299872000073],\n\t\t\t\t[91.91138756600003, 21.83470286700009],\n\t\t\t\t[91.92937259200005, 21.84316640800006],\n\t\t\t\t[91.92164147200003, 21.85342031500005],\n\t\t\t\t[91.92554772200003, 21.86286041900007],\n\t\t\t\t[91.93628991000003, 21.870835679000038],\n\t\t\t\t[91.94971764400003, 21.876695054000038],\n\t\t\t\t[91.94971764400003, 21.88418203300006],\n\t\t\t\t[91.93921959700003, 21.88304271000004],\n\t\t\t\t[91.92994225400008, 21.878648179000038],\n\t\t\t\t[91.92212975400008, 21.871568101000037],\n\t\t\t\t[91.91570071700005, 21.862453518000052],\n\t\t\t\t[91.91032962300005, 21.87490469000005],\n\t\t\t\t[91.90560957100007, 21.89557526200008],\n\t\t\t\t[91.90121504000007, 21.935370184000078],\n\t\t\t\t[91.89820397200003, 21.94489166900007],\n\t\t\t\t[91.88404381600003, 21.960150458000044],\n\t\t\t\t[91.88086998800003, 21.969183661000045],\n\t\t\t\t[91.88086998800003, 22.007025458000044],\n\t\t\t\t[91.85523522200003, 22.109198309000078],\n\t\t\t\t[91.85352623800003, 22.14362213700008],\n\t\t\t\t[91.86394290500004, 22.139593817000048],\n\t\t\t\t[91.86719811300003, 22.13739655200004],\n\t\t\t\t[91.86207116000003, 22.15062083500004],\n\t\t\t\t[91.85328209700003, 22.14874909100007],\n\t\t\t\t[91.84603925900007, 22.135972398000035],\n\t\t\t\t[91.84603925900007, 22.116888739000046],\n\t\t\t\t[91.83985436300003, 22.116888739000046],\n\t\t\t\t[91.82911217500003, 22.134100653000075],\n\t\t\t\t[91.81934655000003, 22.155951239000046],\n\t\t\t\t[91.81299889400003, 22.18032461100006],\n\t\t\t\t[91.81202233200008, 22.205023505000042],\n\t\t\t\t[91.81690514400003, 22.22028229400007],\n\t\t\t\t[91.82585696700005, 22.23004791900007],\n\t\t\t\t[91.83472741000003, 22.237616278000075],\n\t\t\t\t[91.83985436300003, 22.246649481000077],\n\t\t\t\t[91.83838951900003, 22.26308828300006],\n\t\t\t\t[91.82984459700003, 22.271307684000078],\n\t\t\t\t[91.81918379000007, 22.275824286000045],\n\t\t\t\t[91.81202233200008, 22.281398830000057],\n\t\t\t\t[91.80884850400008, 22.306341864000046],\n\t\t\t\t[91.82650800900007, 22.31826406500005],\n\t\t\t\t[91.85238691500007, 22.325344143000052],\n\t\t\t\t[91.87403405000003, 22.336004950000074],\n\t\t\t\t[91.88493899800005, 22.35382721600007],\n\t\t\t\t[91.90805097700007, 22.424750067000048],\n\t\t\t\t[91.90186608200008, 22.42405833500004],\n\t\t\t\t[91.88770592500003, 22.424750067000048],\n\t\t\t\t[91.88550866000003, 22.40965403900009],\n\t\t\t\t[91.87574303500003, 22.37107982000009],\n\t\t\t\t[91.87745201900003, 22.363348700000074],\n\t\t\t\t[91.87045332100007, 22.35809967700004],\n\t\t\t\t[91.85914147200003, 22.346625067000048],\n\t\t\t\t[91.84400475400008, 22.33494700700004],\n\t\t\t\t[91.82634524800005, 22.32916901200008],\n\t\t\t\t[91.82325280000003, 22.324164130000042],\n\t\t\t\t[91.79859459700003, 22.31191640800006],\n\t\t\t\t[91.79135175900007, 22.301906643000052],\n\t\t\t\t[91.79395592500003, 22.286037502000056],\n\t\t\t\t[91.80453535200007, 22.278469143000052],\n\t\t\t\t[91.81723066500007, 22.27407461100006],\n\t\t\t\t[91.82634524800005, 22.26776764500005],\n\t\t\t\t[91.82593834700003, 22.248480536000045],\n\t\t\t\t[91.80892988400007, 22.236273505000042],\n\t\t\t\t[91.78711998800003, 22.237941799000055],\n\t\t\t\t[91.77165774800005, 22.260321356000077],\n\t\t\t\t[91.75440514400003, 22.374660549000055],\n\t\t\t\t[91.74366295700008, 22.411078192000048],\n\t\t\t\t[91.67603600400008, 22.53461334800005],\n\t\t\t\t[91.54810631600003, 22.700344143000052],\n\t\t\t\t[91.51636803500003, 22.712225653000075],\n\t\t\t\t[91.49870853000004, 22.72728099200009],\n\t\t\t\t[91.48462975400008, 22.74551015800006],\n\t\t\t\t[91.47681725400008, 22.76117584800005],\n\t\t\t\t[91.46900475400008, 22.757066148000035],\n\t\t\t\t[91.46241295700008, 22.76190827000005],\n\t\t\t\t[91.45801842500003, 22.772284247000073],\n\t\t\t\t[91.45630944100003, 22.784816799000055],\n\t\t\t\t[91.45834394600007, 22.79706452000005],\n\t\t\t\t[91.46778405000003, 22.80931224200009],\n\t\t\t\t[91.47396894600007, 22.838324286000045],\n\t\t\t\t[91.49000084700003, 22.880560614000046],\n\t\t\t\t[91.49048912900008, 22.90452708500004],\n\t\t\t\t[91.48308353000004, 22.90452708500004],\n\t\t\t\t[91.47966556100005, 22.885891018000052],\n\t\t\t\t[91.46241295700008, 22.83344147300005],\n\t\t\t\t[91.45248457100007, 22.822658596000053],\n\t\t\t\t[91.43043053500003, 22.81631094000005],\n\t\t\t\t[91.41675866000003, 22.799994208000044],\n\t\t\t\t[91.41163170700008, 22.777818101000037],\n\t\t\t\t[91.41472415500004, 22.753729559000078],\n\t\t\t\t[91.39966881600003, 22.76430898600006],\n\t\t\t\t[91.38502037900008, 22.770697333000044],\n\t\t\t\t[91.36833743600005, 22.773993231000077],\n\t\t\t\t[91.34644616000003, 22.77484772300005],\n\t\t\t\t[91.34644616000003, 22.767401434000078],\n\t\t\t\t[91.36744225400008, 22.761664130000042],\n\t\t\t\t[91.37012780000003, 22.75218333500004],\n\t\t\t\t[91.36011803500003, 22.743394273000035],\n\t\t\t\t[91.34262129000007, 22.739447333000044],\n\t\t\t\t[91.29078209700003, 22.738430080000057],\n\t\t\t\t[91.30884850400008, 22.73309967700004],\n\t\t\t\t[91.32504316500007, 22.72614166900007],\n\t\t\t\t[91.33277428500003, 22.72020091400009],\n\t\t\t\t[91.32992597700007, 22.70571523600006],\n\t\t\t\t[91.31739342500003, 22.697211005000042],\n\t\t\t\t[91.30054772200003, 22.69326406500005],\n\t\t\t\t[91.28443444100003, 22.692287502000056],\n\t\t\t\t[91.28345787900008, 22.69334544500009],\n\t\t\t\t[91.25277754000007, 22.699286200000074],\n\t\t\t\t[91.24838300900007, 22.69822825700004],\n\t\t\t\t[91.24480228000004, 22.698391018000052],\n\t\t\t\t[91.24341881600003, 22.70221588700008],\n\t\t\t\t[91.24390709700003, 22.71743398600006],\n\t\t\t\t[91.24341881600003, 22.72020091400009],\n\t\t\t\t[91.23121178500003, 22.724310614000046],\n\t\t\t\t[91.21607506600003, 22.72606028900009],\n\t\t\t\t[91.18189537900008, 22.72646719000005],\n\t\t\t\t[91.18189537900008, 22.72020091400009],\n\t\t\t\t[91.19459069100003, 22.70966217700004],\n\t\t\t\t[91.19922936300003, 22.69879791900007],\n\t\t\t\t[91.19214928500003, 22.69163646000004],\n\t\t\t\t[91.16895592500003, 22.692287502000056],\n\t\t\t\t[91.16895592500003, 22.684881903000075],\n\t\t\t\t[91.22689863400007, 22.671087958000044],\n\t\t\t\t[91.25342858200008, 22.660711981000077],\n\t\t\t\t[91.26449629000007, 22.64081452000005],\n\t\t\t\t[91.26107832100007, 22.627875067000048],\n\t\t\t\t[91.25310306100005, 22.613836981000077],\n\t\t\t\t[91.24156880000004, 22.575395765000053],\n\t\t\t\t[91.22136457600004, 22.55719260500007],\n\t\t\t\t[91.20274304600008, 22.543219639000085],\n\t\t\t\t[91.17656568400008, 22.53641941400008],\n\t\t\t\t[91.12734345800004, 22.527025948000073],\n\t\t\t\t[91.08920058200005, 22.544430256000055],\n\t\t\t\t[91.06957967100004, 22.571556869000062],\n\t\t\t\t[91.05860436300003, 22.61432526200008],\n\t\t\t\t[91.04867597700007, 22.626166083000044],\n\t\t\t\t[91.03793379000007, 22.643866278000075],\n\t\t\t\t[91.02670332100007, 22.674261786000045],\n\t\t\t\t[91.01832116000003, 22.68309153900009],\n\t\t\t\t[91.00375410200007, 22.678656317000048],\n\t\t\t\t[91.01872806100005, 22.664455471000053],\n\t\t\t\t[91.03223717500003, 22.636867580000057],\n\t\t\t\t[91.04021243600005, 22.60773346600007],\n\t\t\t\t[91.03793379000007, 22.58860911700009],\n\t\t\t\t[91.01758873800003, 22.579291083000044],\n\t\t\t\t[90.98511803500003, 22.574367580000057],\n\t\t\t\t[90.95492597700007, 22.575832424000055],\n\t\t\t\t[90.94174238400007, 22.585882880000042],\n\t\t\t\t[90.93555748800003, 22.599676825000074],\n\t\t\t\t[90.90821373800003, 22.61786530200004],\n\t\t\t\t[90.90202884200005, 22.627101955000057],\n\t\t\t\t[90.89877363400007, 22.63617584800005],\n\t\t\t\t[90.88412519600007, 22.65448639500005],\n\t\t\t\t[90.87647545700008, 22.682806708000044],\n\t\t\t\t[90.86548912900008, 22.687160549000055],\n\t\t\t\t[90.83594811300003, 22.684881903000075],\n\t\t\t\t[90.83130944100003, 22.690578518000052],\n\t\t\t\t[90.81950931100005, 22.72646719000005],\n\t\t\t\t[90.81177819100003, 22.732367255000042],\n\t\t\t\t[90.80258222700007, 22.736395575000074],\n\t\t\t\t[90.79493248800003, 22.741359768000052],\n\t\t\t\t[90.78834069100003, 22.75922272300005],\n\t\t\t\t[90.77418053500003, 22.77806224200009],\n\t\t\t\t[90.77100670700008, 22.784816799000055],\n\t\t\t\t[90.76954186300003, 22.795355536000045],\n\t\t\t\t[90.75733483200008, 22.822658596000053],\n\t\t\t\t[90.75001061300003, 22.856756903000075],\n\t\t\t\t[90.74195397200003, 22.874212958000044],\n\t\t\t\t[90.73292076900003, 22.889064846000053],\n\t\t\t\t[90.72559655000003, 22.90570709800005],\n\t\t\t\t[90.72266686300003, 22.92845286700009],\n\t\t\t\t[90.71745853000004, 22.940619208000044],\n\t\t\t\t[90.64014733200008, 23.038031317000048],\n\t\t\t\t[90.62940514400003, 23.064398505000042],\n\t\t\t\t[90.62712649800005, 23.075873114000046],\n\t\t\t\t[90.62720787900008, 23.08665599200009],\n\t\t\t\t[90.63868248800003, 23.14789459800005],\n\t\t\t\t[90.64014733200008, 23.18886953300006],\n\t\t\t\t[90.64584394600007, 23.21092357000009],\n\t\t\t\t[90.65707441500007, 23.23037344000005],\n\t\t\t\t[90.66521243600005, 23.24876536700009],\n\t\t\t\t[90.66114342500003, 23.267645575000074],\n\t\t\t\t[90.66732832100007, 23.267645575000074],\n\t\t\t\t[90.65088951900003, 23.30023834800005],\n\t\t\t\t[90.65015709700003, 23.31354401200008],\n\t\t\t\t[90.66114342500003, 23.32225169500009],\n\t\t\t\t[90.65772545700008, 23.32322825700004],\n\t\t\t\t[90.65479576900003, 23.32330963700008],\n\t\t\t\t[90.65316816500007, 23.324652411000045],\n\t\t\t\t[90.65365644600007, 23.329738674000055],\n\t\t\t\t[90.62842858200008, 23.321519273000035],\n\t\t\t\t[90.61133873800003, 23.34247467700004],\n\t\t\t\t[90.60173587300005, 23.37246328300006],\n\t\t\t\t[90.59913170700008, 23.391180731000077],\n\t\t\t\t[90.60027103000004, 23.44993724200009],\n\t\t\t\t[90.60873457100007, 23.472723700000074],\n\t\t\t\t[90.63331139400003, 23.486761786000045],\n\t\t\t\t[90.69157962300005, 23.486476955000057],\n\t\t\t\t[90.71501712300005, 23.49835846600007],\n\t\t\t\t[90.71583092500003, 23.53514232000009],\n\t\t\t\t[90.71119225400008, 23.54881419500009],\n\t\t\t\t[90.70557701900003, 23.554510809000078],\n\t\t\t\t[90.69581139400003, 23.555487372000073],\n\t\t\t\t[90.67823326900003, 23.555080471000053],\n\t\t\t\t[90.67546634200005, 23.550930080000057],\n\t\t\t\t[90.68433678500003, 23.54173411700009],\n\t\t\t\t[90.70215905000003, 23.52838776200008],\n\t\t\t\t[90.69532311300003, 23.507879950000074],\n\t\t\t\t[90.67774498800003, 23.517279364000046],\n\t\t\t\t[90.66675866000003, 23.51821523600006],\n\t\t\t\t[90.64747155000003, 23.507879950000074],\n\t\t\t\t[90.62208092500003, 23.500067450000074],\n\t\t\t\t[90.60775800900007, 23.491115627000056],\n\t\t\t\t[90.60336347700007, 23.494696356000077],\n\t\t\t\t[90.58814537900008, 23.53416575700004],\n\t\t\t\t[90.59205162900008, 23.56248607000009],\n\t\t\t\t[90.60816491000003, 23.585760809000078],\n\t\t\t\t[90.63331139400003, 23.596625067000048],\n\t\t\t\t[90.62712649800005, 23.603461005000042],\n\t\t\t\t[90.62533613400007, 23.599351304000038],\n\t\t\t\t[90.62525475400008, 23.59833405200004],\n\t\t\t\t[90.62403405000003, 23.598089911000045],\n\t\t\t\t[90.61963951900003, 23.596625067000048],\n\t\t\t\t[90.61198978000004, 23.60610586100006],\n\t\t\t\t[90.59546959700003, 23.604396877000056],\n\t\t\t\t[90.55876712300005, 23.590399481000077],\n\t\t\t\t[90.56446373800003, 23.57640208500004],\n\t\t\t\t[90.55941816500007, 23.56793854400007],\n\t\t\t\t[90.54721113400007, 23.563788153000075],\n\t\t\t\t[90.53150475400008, 23.56248607000009],\n\t\t\t\t[90.51465905000003, 23.563788153000075],\n\t\t\t\t[90.50171959700003, 23.56793854400007],\n\t\t\t\t[90.47632897200003, 23.582953192000048],\n\t\t\t\t[90.48438561300003, 23.56745026200008],\n\t\t\t\t[90.49838300900007, 23.55727773600006],\n\t\t\t\t[90.51498457100007, 23.55141836100006],\n\t\t\t\t[90.53150475400008, 23.54881419500009],\n\t\t\t\t[90.56869550900007, 23.54751211100006],\n\t\t\t\t[90.57683353000004, 23.539496161000045],\n\t\t\t\t[90.57894941500007, 23.44985586100006],\n\t\t\t\t[90.57593834700003, 23.43895091400009],\n\t\t\t\t[90.56812584700003, 23.432928778000075],\n\t\t\t\t[90.55990644600007, 23.418402411000045],\n\t\t\t\t[90.55372155000003, 23.40070221600007],\n\t\t\t\t[90.55193118600005, 23.38495514500005],\n\t\t\t\t[90.51832116000003, 23.398260809000078],\n\t\t\t\t[90.32243899800005, 23.433294989000046],\n\t\t\t\t[90.28443444100003, 23.446193752000056],\n\t\t\t\t[90.25033613400007, 23.466945705000057],\n\t\t\t\t[90.24935957100007, 23.45538971600007],\n\t\t\t\t[90.25879967500003, 23.444566148000035],\n\t\t\t\t[90.38851972700007, 23.372381903000075],\n\t\t\t\t[90.40414472700007, 23.36041901200008],\n\t\t\t\t[90.41342207100007, 23.34796784100007],\n\t\t\t\t[90.41968834700003, 23.335598049000055],\n\t\t\t\t[90.42847741000003, 23.326117255000042],\n\t\t\t\t[90.46021569100003, 23.31972890800006],\n\t\t\t\t[90.48796634200005, 23.30683014500005],\n\t\t\t\t[90.50359134200005, 23.30174388200004],\n\t\t\t\t[90.56910241000003, 23.294989325000074],\n\t\t\t\t[90.57732181100005, 23.288397528000075],\n\t\t\t\t[90.60661868600005, 23.247219143000052],\n\t\t\t\t[90.61085045700008, 23.23078034100007],\n\t\t\t\t[90.61451256600003, 23.195461330000057],\n\t\t\t\t[90.61036217500003, 23.20115794500009],\n\t\t\t\t[90.60271243600005, 23.211004950000074],\n\t\t\t\t[90.59351647200003, 23.219875393000052],\n\t\t\t\t[90.59839928500003, 23.200425523000035],\n\t\t\t\t[90.60287519600007, 23.14130280200004],\n\t\t\t\t[90.59913170700008, 23.11749909100007],\n\t\t\t\t[90.57195071700005, 23.081732489000046],\n\t\t\t\t[90.56560306100005, 23.075873114000046],\n\t\t\t\t[90.55372155000003, 23.078558661000045],\n\t\t\t\t[90.55128014400003, 23.08690013200004],\n\t\t\t\t[90.55591881600003, 23.096828518000052],\n\t\t\t\t[90.56560306100005, 23.10382721600007],\n\t\t\t\t[90.56560306100005, 23.110663153000075],\n\t\t\t\t[90.55876712300005, 23.110663153000075],\n\t\t\t\t[90.54761803500003, 23.09674713700008],\n\t\t\t\t[90.53663170700008, 23.086818752000056],\n\t\t\t\t[90.52279707100007, 23.080145575000074],\n\t\t\t\t[90.50359134200005, 23.075873114000046],\n\t\t\t\t[90.46607506600003, 23.07684967700004],\n\t\t\t\t[90.45362389400003, 23.072333075000074],\n\t\t\t\t[90.44890384200005, 23.05573151200008],\n\t\t\t\t[90.45012454500005, 23.049343166000085],\n\t\t\t\t[90.45435631600003, 23.02753327000005],\n\t\t\t\t[90.46827233200008, 22.99607982000009],\n\t\t\t\t[90.48698978000004, 22.966131903000075],\n\t\t\t\t[90.50700931100005, 22.94208405200004],\n\t\t\t\t[90.50928795700008, 22.93699778900009],\n\t\t\t\t[90.50757897200003, 22.92536041900007],\n\t\t\t\t[90.51042728000004, 22.91819896000004],\n\t\t\t\t[90.51295006600003, 22.91705963700008],\n\t\t\t\t[90.51685631600003, 22.916815497000073],\n\t\t\t\t[90.52100670700008, 22.915676174000055],\n\t\t\t\t[90.52409915500004, 22.91201406500005],\n\t\t\t\t[90.53598066500007, 22.90338776200008],\n\t\t\t\t[90.54004967500003, 22.896551825000074],\n\t\t\t\t[90.53492272200003, 22.887152411000045],\n\t\t\t\t[90.52003014400003, 22.880194403000075],\n\t\t\t\t[90.50513756600003, 22.881659247000073],\n\t\t\t\t[90.49048912900008, 22.885199286000045],\n\t\t\t\t[90.47632897200003, 22.884100653000075],\n\t\t\t\t[90.45720462300005, 22.861761786000045],\n\t\t\t\t[90.44809004000007, 22.82843659100007],\n\t\t\t\t[90.43604576900003, 22.800604559000078],\n\t\t\t\t[90.40796959700003, 22.794663804000038],\n\t\t\t\t[90.42400149800005, 22.781683661000045],\n\t\t\t\t[90.41993248800003, 22.76825592700004],\n\t\t\t\t[90.40642337300005, 22.76308828300006],\n\t\t\t\t[90.39429772200003, 22.77484772300005],\n\t\t\t\t[90.37256920700008, 22.761419989000046],\n\t\t\t\t[90.38721764400003, 22.751288153000075],\n\t\t\t\t[90.41578209700003, 22.74249909100007],\n\t\t\t\t[90.43523196700005, 22.733303127000056],\n\t\t\t\t[90.44459069100003, 22.751654364000046],\n\t\t\t\t[90.46168053500003, 22.748846747000073],\n\t\t\t\t[90.47901451900003, 22.73501211100006],\n\t\t\t\t[90.48991946700005, 22.72020091400009],\n\t\t\t\t[90.49293053500003, 22.709906317000048],\n\t\t\t\t[90.49675540500004, 22.678656317000048],\n\t\t\t\t[90.50896243600005, 22.646429755000042],\n\t\t\t\t[90.51270592500003, 22.611476955000057],\n\t\t\t\t[90.51002037900008, 22.60423411700009],\n\t\t\t\t[90.50017337300005, 22.592352606000077],\n\t\t\t\t[90.49138431100005, 22.587836005000042],\n\t\t\t\t[90.46859785200007, 22.58470286700009],\n\t\t\t\t[90.45923912900008, 22.579291083000044],\n\t\t\t\t[90.45346113400007, 22.564195054000038],\n\t\t\t\t[90.44214928500003, 22.508734442000048],\n\t\t\t\t[90.44206790500004, 22.49363841400009],\n\t\t\t\t[90.44499759200005, 22.50413646000004],\n\t\t\t\t[90.45118248800003, 22.510158596000053],\n\t\t\t\t[90.45801842500003, 22.51463450700004],\n\t\t\t\t[90.46265709700003, 22.52098216400009],\n\t\t\t\t[90.46355228000004, 22.53143952000005],\n\t\t\t\t[90.46045983200008, 22.551174221000053],\n\t\t\t\t[90.46265709700003, 22.56195709800005],\n\t\t\t\t[90.47250410200007, 22.57558828300006],\n\t\t\t\t[90.48731530000003, 22.583726304000038],\n\t\t\t\t[90.50513756600003, 22.58624909100007],\n\t\t\t\t[90.52409915500004, 22.58307526200008],\n\t\t\t\t[90.55974368600005, 22.562323309000078],\n\t\t\t\t[90.57781009200005, 22.533677476000037],\n\t\t\t\t[90.58969160200007, 22.500433661000045],\n\t\t\t\t[90.60661868600005, 22.465765692000048],\n\t\t\t\t[90.59131920700008, 22.470526434000078],\n\t\t\t\t[90.58619225400008, 22.473211981000077],\n\t\t\t\t[90.58643639400003, 22.45058828300006],\n\t\t\t\t[90.59359785200007, 22.43231842700004],\n\t\t\t\t[90.61345462300005, 22.396877346000053],\n\t\t\t\t[90.61841881600003, 22.376654364000046],\n\t\t\t\t[90.61931399800005, 22.355902411000045],\n\t\t\t\t[90.61345462300005, 22.314886786000045],\n\t\t\t\t[90.58155358200008, 22.238226630000042],\n\t\t\t\t[90.55795332100007, 22.20335521000004],\n\t\t\t\t[90.53834069100003, 22.198879299000055],\n\t\t\t\t[90.51172936300003, 22.185288804000038],\n\t\t\t\t[90.50114993600005, 22.176703192000048],\n\t\t\t\t[90.49675540500004, 22.167792059000078],\n\t\t\t\t[90.49439537900008, 22.154242255000042],\n\t\t\t\t[90.48829186300003, 22.138617255000042],\n\t\t\t\t[90.45964603000004, 22.091945705000057],\n\t\t\t\t[90.45004316500007, 22.08079661700009],\n\t\t\t\t[90.43864993600005, 22.075995184000078],\n\t\t\t\t[90.42546634200005, 22.07884349200009],\n\t\t\t\t[90.40845787900008, 22.08592357000009],\n\t\t\t\t[90.39380944100003, 22.09471263200004],\n\t\t\t\t[90.38746178500003, 22.10260651200008],\n\t\t\t\t[90.39323978000004, 22.127386786000045],\n\t\t\t\t[90.41749108200008, 22.175034898000035],\n\t\t\t\t[90.42164147200003, 22.198879299000055],\n\t\t\t\t[90.41000410200007, 22.22728099200009],\n\t\t\t\t[90.40796959700003, 22.24042389500005],\n\t\t\t\t[90.41407311300003, 22.27179596600007],\n\t\t\t\t[90.41089928500003, 22.28424713700008],\n\t\t\t\t[90.39429772200003, 22.288234768000052],\n\t\t\t\t[90.39869225400008, 22.26748281500005],\n\t\t\t\t[90.38868248800003, 22.223211981000077],\n\t\t\t\t[90.39087975400008, 22.208807684000078],\n\t\t\t\t[90.39909915500004, 22.20221588700008],\n\t\t\t\t[90.40552819100003, 22.19953034100007],\n\t\t\t\t[90.41049238400007, 22.195705471000053],\n\t\t\t\t[90.41423587300005, 22.18577708500004],\n\t\t\t\t[90.41285241000003, 22.17804596600007],\n\t\t\t\t[90.40821373800003, 22.171210028000075],\n\t\t\t\t[90.40056399800005, 22.16404857000009],\n\t\t\t\t[90.39918053500003, 22.16233958500004],\n\t\t\t\t[90.39714603000004, 22.160630601000037],\n\t\t\t\t[90.39519290500004, 22.15721263200004],\n\t\t\t\t[90.39258873800003, 22.143011786000045],\n\t\t\t\t[90.38868248800003, 22.143459377000056],\n\t\t\t\t[90.38379967500003, 22.145738023000035],\n\t\t\t\t[90.38005618600005, 22.14362213700008],\n\t\t\t\t[90.37712649800005, 22.133612372000073],\n\t\t\t\t[90.37378991000003, 22.10260651200008],\n\t\t\t\t[90.36988366000003, 22.08982982000009],\n\t\t\t\t[90.36573326900003, 22.081203518000052],\n\t\t\t\t[90.34742272200003, 22.05532461100006],\n\t\t\t\t[90.33472741000003, 22.041815497000073],\n\t\t\t\t[90.33220462300005, 22.03807200700004],\n\t\t\t\t[90.32789147200003, 22.02049388200004],\n\t\t\t\t[90.30860436300003, 21.984035549000055],\n\t\t\t\t[90.30437259200005, 21.965765692000048],\n\t\t\t\t[90.29997806100005, 21.927679755000042],\n\t\t\t\t[90.29070071700005, 21.890326239000046],\n\t\t\t\t[90.28288821700005, 21.870794989000046],\n\t\t\t\t[90.27271569100003, 21.85740794500009],\n\t\t\t\t[90.21762129000007, 21.81346263200004],\n\t\t\t\t[90.20378665500004, 21.80459219000005],\n\t\t\t\t[90.18482506600003, 21.80097077000005],\n\t\t\t\t[90.16439863400007, 21.80426666900007],\n\t\t\t\t[90.12680097700007, 21.818793036000045],\n\t\t\t\t[90.10906009200005, 21.822088934000078],\n\t\t\t\t[90.09294681100005, 21.83026764500005],\n\t\t\t\t[90.08855228000004, 21.84674713700008],\n\t\t\t\t[90.09538821700005, 21.859442450000074],\n\t\t\t\t[90.11247806100005, 21.856268622000073],\n\t\t\t\t[90.10499108200008, 21.870266018000052],\n\t\t\t\t[90.11085045700008, 21.880113023000035],\n\t\t\t\t[90.12086022200003, 21.88930898600006],\n\t\t\t\t[90.12623131600003, 21.901190497000073],\n\t\t\t\t[90.12452233200008, 21.90973541900007],\n\t\t\t\t[90.12183678500003, 21.915350653000075],\n\t\t\t\t[90.12134850400008, 21.921576239000046],\n\t\t\t\t[90.12623131600003, 21.93195221600007],\n\t\t\t\t[90.11622155000003, 21.91933828300006],\n\t\t\t\t[90.09848066500007, 21.878607489000046],\n\t\t\t\t[90.08887780000003, 21.86985911700009],\n\t\t\t\t[90.07935631600003, 21.866929429000038],\n\t\t\t\t[90.06690514400003, 21.85342031500005],\n\t\t\t\t[90.05787194100003, 21.849351304000038],\n\t\t\t\t[90.04932701900003, 21.85101959800005],\n\t\t\t\t[90.03630618600005, 21.861151434000078],\n\t\t\t\t[90.02442467500003, 21.862453518000052],\n\t\t\t\t[90.03126061300003, 21.889227606000077],\n\t\t\t\t[90.03394616000003, 21.94354889500005],\n\t\t\t\t[90.04493248800003, 21.966131903000075],\n\t\t\t\t[90.05420983200008, 21.97337474200009],\n\t\t\t\t[90.06576582100007, 21.97988515800006],\n\t\t\t\t[90.07715905000003, 21.987982489000046],\n\t\t\t\t[90.08578535200007, 22.00023021000004],\n\t\t\t\t[90.09058678500003, 22.015448309000078],\n\t\t\t\t[90.09253991000003, 22.02798086100006],\n\t\t\t\t[90.09595787900008, 22.04010651200008],\n\t\t\t\t[90.10564212300005, 22.05426666900007],\n\t\t\t\t[90.14673912900008, 22.089016018000052],\n\t\t\t\t[90.15162194100003, 22.094875393000052],\n\t\t\t\t[90.15886478000004, 22.10691966400009],\n\t\t\t\t[90.16407311300003, 22.113226630000042],\n\t\t\t\t[90.17286217500003, 22.117010809000078],\n\t\t\t\t[90.18181399800005, 22.11481354400007],\n\t\t\t\t[90.18970787900008, 22.11082591400009],\n\t\t\t\t[90.19507897200003, 22.109523830000057],\n\t\t\t\t[90.21615644600007, 22.12323639500005],\n\t\t\t\t[90.23170006600003, 22.145656643000052],\n\t\t\t\t[90.23910566500007, 22.172267971000053],\n\t\t\t\t[90.23609459700003, 22.198879299000055],\n\t\t\t\t[90.21827233200008, 22.15570709800005],\n\t\t\t\t[90.20582116000003, 22.132961330000057],\n\t\t\t\t[90.19166100400008, 22.123114325000074],\n\t\t\t\t[90.16480553500003, 22.11981842700004],\n\t\t\t\t[90.14828535200007, 22.11078522300005],\n\t\t\t\t[90.08887780000003, 22.051174221000053],\n\t\t\t\t[90.08179772200003, 22.04100169500009],\n\t\t\t\t[90.07374108200008, 22.019232489000046],\n\t\t\t\t[90.06104576900003, 22.000799872000073],\n\t\t\t\t[90.05795332100007, 21.99371979400007],\n\t\t\t\t[90.05241946700005, 21.98899974200009],\n\t\t\t\t[90.03809655000003, 21.98655833500004],\n\t\t\t\t[90.02816816500007, 21.988104559000078],\n\t\t\t\t[89.99634850400008, 22.00023021000004],\n\t\t\t\t[90.00212649800005, 22.014105536000045],\n\t\t\t\t[90.00318444100003, 22.029364325000074],\n\t\t\t\t[90.01075280000003, 22.04120514500005],\n\t\t\t\t[90.02019290500004, 22.04881419500009],\n\t\t\t\t[90.02898196700005, 22.05296458500004],\n\t\t\t\t[90.03541100400008, 22.059800523000035],\n\t\t\t\t[90.03809655000003, 22.075344143000052],\n\t\t\t\t[90.03467858200008, 22.105169989000046],\n\t\t\t\t[90.03907311300003, 22.11627838700008],\n\t\t\t\t[90.04273522200003, 22.131252346000053],\n\t\t\t\t[90.05209394600007, 22.141099351000037],\n\t\t\t\t[90.06324303500003, 22.145738023000035],\n\t\t\t\t[90.07260175900007, 22.152044989000046],\n\t\t\t\t[90.07837975400008, 22.16404857000009],\n\t\t\t\t[90.05258222700007, 22.155462958000044],\n\t\t\t\t[90.04004967500003, 22.13808828300006],\n\t\t\t\t[90.02442467500003, 22.089016018000052],\n\t\t\t\t[90.01539147200003, 22.077866929000038],\n\t\t\t\t[89.98853600400008, 22.05304596600007],\n\t\t\t\t[89.98275800900007, 22.044623114000046],\n\t\t\t\t[89.98519941500007, 21.99941640800006],\n\t\t\t\t[89.98275800900007, 21.98655833500004],\n\t\t\t\t[89.96778405000003, 21.974554755000042],\n\t\t\t\t[89.94971764400003, 21.980902411000045],\n\t\t\t\t[89.93441816500007, 21.997707424000055],\n\t\t\t\t[89.92823326900003, 22.017279364000046],\n\t\t\t\t[89.92628014400003, 22.027167059000078],\n\t\t\t\t[89.91749108200008, 22.04987213700008],\n\t\t\t\t[89.91456139400003, 22.061672268000052],\n\t\t\t\t[89.91236412900008, 22.135565497000073],\n\t\t\t\t[89.90308678500003, 22.176906643000052],\n\t\t\t\t[89.90088951900003, 22.201971747000073],\n\t\t\t\t[89.89828535200007, 22.21165599200009],\n\t\t\t\t[89.88550866000003, 22.230617580000057],\n\t\t\t\t[89.88038170700008, 22.24042389500005],\n\t\t\t\t[89.87663821700005, 22.25348541900007],\n\t\t\t\t[89.87533613400007, 22.26398346600007],\n\t\t\t\t[89.87680097700007, 22.274725653000075],\n\t\t\t\t[89.88038170700008, 22.288234768000052],\n\t\t\t\t[89.90015709700003, 22.333929755000042],\n\t\t\t\t[89.98275800900007, 22.445257880000042],\n\t\t\t\t[89.98829186300003, 22.45774974200009],\n\t\t\t\t[89.99195397200003, 22.469875393000052],\n\t\t\t\t[89.99789472700007, 22.480861721000053],\n\t\t\t\t[90.01010175900007, 22.49022044500009],\n\t\t\t\t[89.98275800900007, 22.473211981000077],\n\t\t\t\t[89.97950280000003, 22.470078843000067],\n\t\t\t\t[89.94743899800005, 22.43968333500004],\n\t\t\t\t[89.93360436300003, 22.423529364000046],\n\t\t\t\t[89.92823326900003, 22.40770091400009],\n\t\t\t\t[89.92042076900003, 22.391831773000035],\n\t\t\t\t[89.90308678500003, 22.396429755000042],\n\t\t\t\t[89.87289472700007, 22.41860586100006],\n\t\t\t\t[89.87484785200007, 22.397650458000044],\n\t\t\t\t[89.88054446700005, 22.380601304000038],\n\t\t\t\t[89.88412519600007, 22.36351146000004],\n\t\t\t\t[89.88038170700008, 22.342230536000045],\n\t\t\t\t[89.83871504000007, 22.26776764500005],\n\t\t\t\t[89.85084069100003, 22.246527411000045],\n\t\t\t\t[89.86133873800003, 22.211004950000074],\n\t\t\t\t[89.87289472700007, 22.14362213700008],\n\t\t\t\t[89.87427819100003, 22.10883209800005],\n\t\t\t\t[89.87134850400008, 22.091864325000074],\n\t\t\t\t[89.86296634200005, 22.079046942000048],\n\t\t\t\t[89.84620201900003, 22.07062409100007],\n\t\t\t\t[89.83155358200008, 22.071966864000046],\n\t\t\t\t[89.81617272200003, 22.075995184000078],\n\t\t\t\t[89.79721113400007, 22.075995184000078],\n\t\t\t\t[89.79721113400007, 22.068508205000057],\n\t\t\t\t[89.81836998800003, 22.06004466400009],\n\t\t\t\t[89.83594811300003, 22.04946523600006],\n\t\t\t\t[89.84791100400008, 22.03388092700004],\n\t\t\t\t[89.85238691500007, 22.01044342700004],\n\t\t\t\t[89.85108483200008, 22.000881252000056],\n\t\t\t\t[89.84595787900008, 21.982896226000037],\n\t\t\t\t[89.84620201900003, 21.972316799000055],\n\t\t\t\t[89.85027103000004, 21.96312083500004],\n\t\t\t\t[89.86378014400003, 21.943304755000042],\n\t\t\t\t[89.87183678500003, 21.924261786000045],\n\t\t\t\t[89.88160241000003, 21.912990627000056],\n\t\t\t\t[89.88721764400003, 21.900091864000046],\n\t\t\t\t[89.88038170700008, 21.88418203300006],\n\t\t\t\t[89.87322024800005, 21.88157786700009],\n\t\t\t\t[89.85092207100007, 21.877508856000077],\n\t\t\t\t[89.82520592500003, 21.856268622000073],\n\t\t\t\t[89.81959069100003, 21.849554755000042],\n\t\t\t\t[89.81763756600003, 21.844916083000044],\n\t\t\t\t[89.81421959700003, 21.84080638200004],\n\t\t\t\t[89.80469811300003, 21.835760809000078],\n\t\t\t\t[89.78638756600003, 21.828924872000073],\n\t\t\t\t[89.77572675900007, 21.82758209800005],\n\t\t\t\t[89.77116946700005, 21.83234284100007],\n\t\t\t\t[89.76587975400008, 21.84674713700008],\n\t\t\t\t[89.75342858200008, 21.843898830000057],\n\t\t\t\t[89.73845462300005, 21.834418036000045],\n\t\t\t\t[89.72584069100003, 21.828924872000073],\n\t\t\t\t[89.70915774800005, 21.83006419500009],\n\t\t\t\t[89.69044030000003, 21.833726304000038],\n\t\t\t\t[89.67335045700008, 21.84007396000004],\n\t\t\t\t[89.66130618600005, 21.849351304000038],\n\t\t\t\t[89.65691165500004, 21.857123114000046],\n\t\t\t\t[89.65316816500007, 21.867743231000077],\n\t\t\t\t[89.65259850400008, 21.878851630000042],\n\t\t\t\t[89.66334069100003, 21.896307684000078],\n\t\t\t\t[89.66130618600005, 21.90582916900007],\n\t\t\t\t[89.64698326900003, 21.925116278000075],\n\t\t\t\t[89.61898847700007, 21.86985911700009],\n\t\t\t\t[89.63038170700008, 21.85146719000005],\n\t\t\t\t[89.64975019600007, 21.82636139500005],\n\t\t\t\t[89.67204837300005, 21.80426666900007],\n\t\t\t\t[89.69206790500004, 21.79482656500005],\n\t\t\t\t[89.70069420700008, 21.784857489000046],\n\t\t\t\t[89.68995201900003, 21.76520416900007],\n\t\t\t\t[89.66822350400008, 21.750881252000056],\n\t\t\t\t[89.64356530000003, 21.75690338700008],\n\t\t\t\t[89.63152103000004, 21.764064846000053],\n\t\t\t\t[89.62037194100003, 21.76434967700004],\n\t\t\t\t[89.59546959700003, 21.75999583500004],\n\t\t\t\t[89.59278405000003, 21.754380601000037],\n\t\t\t\t[89.60377037900008, 21.727687893000052],\n\t\t\t\t[89.60596764400003, 21.71906159100007],\n\t\t\t\t[89.58692467500003, 21.700832424000055],\n\t\t\t\t[89.56568444100003, 21.713364976000037],\n\t\t\t\t[89.53711998800003, 21.75381094000005],\n\t\t\t\t[89.53891035200007, 21.77147044500009],\n\t\t\t\t[89.52735436300003, 21.81281159100007],\n\t\t\t\t[89.53028405000003, 21.835760809000078],\n\t\t\t\t[89.53834069100003, 21.84861888200004],\n\t\t\t\t[89.55689537900008, 21.868801174000055],\n\t\t\t\t[89.56446373800003, 21.88418203300006],\n\t\t\t\t[89.56763756600003, 21.90070221600007],\n\t\t\t\t[89.56348717500003, 21.973130601000037],\n\t\t\t\t[89.57129967500003, 22.03123607000009],\n\t\t\t\t[89.57667076900003, 22.051703192000048],\n\t\t\t\t[89.60059655000003, 22.09125397300005],\n\t\t\t\t[89.60596764400003, 22.113226630000042],\n\t\t\t\t[89.60254967500003, 22.134507554000038],\n\t\t\t\t[89.59376061300003, 22.155422268000052],\n\t\t\t\t[89.58139082100007, 22.17405833500004],\n\t\t\t\t[89.56788170700008, 22.18891022300005],\n\t\t\t\t[89.56723066500007, 22.202826239000046],\n\t\t\t\t[89.59791100400008, 22.240301825000074],\n\t\t\t\t[89.60596764400003, 22.25690338700008],\n\t\t\t\t[89.60710696700005, 22.278265692000048],\n\t\t\t\t[89.61060631600003, 22.298895575000074],\n\t\t\t\t[89.61695397200003, 22.318426825000074],\n\t\t\t\t[89.62647545700008, 22.336004950000074],\n\t\t\t\t[89.61548912900008, 22.328273830000057],\n\t\t\t\t[89.60621178500003, 22.315619208000044],\n\t\t\t\t[89.59245853000004, 22.288234768000052],\n\t\t\t\t[89.58082116000003, 22.27724844000005],\n\t\t\t\t[89.57715905000003, 22.268500067000048],\n\t\t\t\t[89.58619225400008, 22.245428778000075],\n\t\t\t\t[89.58033287900008, 22.236761786000045],\n\t\t\t\t[89.56104576900003, 22.223089911000045],\n\t\t\t\t[89.54916425900007, 22.20526764500005],\n\t\t\t\t[89.55030358200008, 22.19212474200009],\n\t\t\t\t[89.57129967500003, 22.157904364000046],\n\t\t\t\t[89.57634524800005, 22.14549388200004],\n\t\t\t\t[89.57878665500004, 22.135891018000052],\n\t\t\t\t[89.57935631600003, 22.113226630000042],\n\t\t\t\t[89.57699629000007, 22.101263739000046],\n\t\t\t\t[89.56674238400007, 22.082098700000074],\n\t\t\t\t[89.56446373800003, 22.072211005000042],\n\t\t\t\t[89.55648847700007, 22.00844961100006],\n\t\t\t\t[89.55144290500004, 21.99404531500005],\n\t\t\t\t[89.53288821700005, 21.98468659100007],\n\t\t\t\t[89.52475019600007, 22.000148830000057],\n\t\t\t\t[89.52344811300003, 22.044623114000046],\n\t\t\t\t[89.52613366000003, 22.055121161000045],\n\t\t\t\t[89.53646894600007, 22.075832424000055],\n\t\t\t\t[89.53711998800003, 22.089016018000052],\n\t\t\t\t[89.49203535200007, 22.188381252000056],\n\t\t\t\t[89.48943118600005, 22.208807684000078],\n\t\t\t\t[89.49415123800003, 22.253566799000055],\n\t\t\t\t[89.49301191500007, 22.273504950000074],\n\t\t\t\t[89.48316491000003, 22.295070705000057],\n\t\t\t\t[89.47575931100005, 22.295070705000057],\n\t\t\t\t[89.46745853000004, 22.228989976000037],\n\t\t\t\t[89.47575931100005, 22.10260651200008],\n\t\t\t\t[89.48316491000003, 22.10260651200008],\n\t\t\t\t[89.48406009200005, 22.11668528900009],\n\t\t\t\t[89.48878014400003, 22.12958405200004],\n\t\t\t\t[89.49415123800003, 22.136867580000057],\n\t\t\t\t[89.49683678500003, 22.133978583000044],\n\t\t\t\t[89.49822024800005, 22.12531159100007],\n\t\t\t\t[89.50171959700003, 22.113104559000078],\n\t\t\t\t[89.50684655000003, 22.10101959800005],\n\t\t\t\t[89.51295006600003, 22.09243398600006],\n\t\t\t\t[89.51832116000003, 22.081000067000048],\n\t\t\t\t[89.51742597700007, 22.066473700000074],\n\t\t\t\t[89.50912519600007, 22.04120514500005],\n\t\t\t\t[89.50416100400008, 22.03668854400007],\n\t\t\t\t[89.49187259200005, 22.03457265800006],\n\t\t\t\t[89.48943118600005, 22.03123607000009],\n\t\t\t\t[89.49040774800005, 22.023993231000077],\n\t\t\t\t[89.49268639400003, 22.019191799000055],\n\t\t\t\t[89.49683678500003, 22.01386139500005],\n\t\t\t\t[89.50049889400003, 22.00259023600006],\n\t\t\t\t[89.51270592500003, 21.97809479400007],\n\t\t\t\t[89.52003014400003, 21.969183661000045],\n\t\t\t\t[89.52182050900007, 21.96230703300006],\n\t\t\t\t[89.51254316500007, 21.909125067000048],\n\t\t\t\t[89.50228925900007, 21.89752838700008],\n\t\t\t\t[89.48910566500007, 21.888373114000046],\n\t\t\t\t[89.47575931100005, 21.876695054000038],\n\t\t\t\t[89.46461022200003, 21.859198309000078],\n\t\t\t\t[89.46363366000003, 21.845038153000075],\n\t\t\t\t[89.46705162900008, 21.828599351000037],\n\t\t\t\t[89.46949303500003, 21.804388739000046],\n\t\t\t\t[89.46583092500003, 21.781317450000074],\n\t\t\t\t[89.45622806100005, 21.76239655200004],\n\t\t\t\t[89.44271894600007, 21.746649481000077],\n\t\t\t\t[89.40642337300005, 21.717352606000077],\n\t\t\t\t[89.39519290500004, 21.71637604400007],\n\t\t\t\t[89.36963951900003, 21.743312893000052],\n\t\t\t\t[89.36426842500003, 21.758205471000053],\n\t\t\t\t[89.36280358200008, 21.78384023600006],\n\t\t\t\t[89.36589603000004, 21.828924872000073],\n\t\t\t\t[89.37126712300005, 21.84715403900009],\n\t\t\t\t[89.38428795700008, 21.877834377000056],\n\t\t\t\t[89.38697350400008, 21.901190497000073],\n\t\t\t\t[89.38266035200007, 21.92133209800005],\n\t\t\t\t[89.36402428500003, 21.95506419500009],\n\t\t\t\t[89.35962975400008, 21.972316799000055],\n\t\t\t\t[89.35222415500004, 21.972316799000055],\n\t\t\t\t[89.34595787900008, 21.95701732000009],\n\t\t\t\t[89.34880618600005, 21.944159247000073],\n\t\t\t\t[89.35523522200003, 21.93162669500009],\n\t\t\t\t[89.35962975400008, 21.917669989000046],\n\t\t\t\t[89.35962975400008, 21.901678778000075],\n\t\t\t\t[89.35596764400003, 21.892523505000042],\n\t\t\t\t[89.33912194100003, 21.876695054000038],\n\t\t\t\t[89.32886803500003, 21.86465078300006],\n\t\t\t\t[89.32260175900007, 21.854641018000052],\n\t\t\t\t[89.30616295700008, 21.817613023000035],\n\t\t\t\t[89.30128014400003, 21.809393622000073],\n\t\t\t\t[89.29623457100007, 21.809068101000037],\n\t\t\t\t[89.29070071700005, 21.822088934000078],\n\t\t\t\t[89.28394616000003, 21.822088934000078],\n\t\t\t\t[89.28443444100003, 21.796820380000042],\n\t\t\t\t[89.29468834700003, 21.75779857000009],\n\t\t\t\t[89.29070071700005, 21.733343817000048],\n\t\t\t\t[89.27369225400008, 21.69879791900007],\n\t\t\t\t[89.27662194100003, 21.687567450000074],\n\t\t\t\t[89.29753665500004, 21.678127346000053],\n\t\t\t\t[89.28589928500003, 21.66559479400007],\n\t\t\t\t[89.26872806100005, 21.653998114000046],\n\t\t\t\t[89.24870853000004, 21.64590078300006],\n\t\t\t\t[89.22925866000003, 21.64394765800006],\n\t\t\t\t[89.21045983200008, 21.654120184000078],\n\t\t\t\t[89.20443769600007, 21.672674872000073],\n\t\t\t\t[89.20826256600003, 21.690619208000044],\n\t\t\t\t[89.21859785200007, 21.698553778000075],\n\t\t\t\t[89.22071373800003, 21.709418036000045],\n\t\t\t\t[89.18970787900008, 21.79124583500004],\n\t\t\t\t[89.18824303500003, 21.799709377000056],\n\t\t\t\t[89.18767337300005, 21.81150950700004],\n\t\t\t\t[89.18336022200003, 21.815619208000044],\n\t\t\t\t[89.17408287900008, 21.81004466400009],\n\t\t\t\t[89.16456139400003, 21.80019765800006],\n\t\t\t\t[89.16041100400008, 21.79132721600007],\n\t\t\t\t[89.15455162900008, 21.786851304000038],\n\t\t\t\t[89.14128665500004, 21.790228583000044],\n\t\t\t\t[89.11939537900008, 21.80097077000005],\n\t\t\t\t[89.10906009200005, 21.809515692000048],\n\t\t\t\t[89.10466556100005, 21.81586334800005],\n\t\t\t\t[89.07992597700007, 21.897406317000048],\n\t\t\t\t[89.07781009200005, 21.91425202000005],\n\t\t\t\t[89.08041425900007, 21.934881903000075],\n\t\t\t\t[89.09107506600003, 21.97679271000004],\n\t\t\t\t[89.09148196700005, 22.00023021000004],\n\t\t\t\t[89.08423912900008, 22.021185614000046],\n\t\t\t\t[89.06202233200008, 22.04950592700004],\n\t\t\t\t[89.05738366000003, 22.06509023600006],\n\t\t\t\t[89.06348717500003, 22.111029364000046],\n\t\t\t\t[89.06039472700007, 22.12986888200004],\n\t\t\t\t[89.06069258700006, 22.130484925000076],\n\t\t\t\t[89.07815922000009, 22.150845439000122],\n\t\t\t\t[89.07619551700009, 22.175030009000082],\n\t\t\t\t[89.07071781400009, 22.194822083000062],\n\t\t\t\t[89.06229455500011, 22.21156524700011],\n\t\t\t\t[89.01862797100011, 22.26468861900004],\n\t\t\t\t[89.00911950700004, 22.285617575000046],\n\t\t\t\t[89.02353723100003, 22.294815979000035],\n\t\t\t\t[89.00694909700013, 22.32142934200006],\n\t\t\t\t[89.00152307100007, 22.333676656000094],\n\t\t\t\t[88.98958581600004, 22.386903382000057],\n\t\t\t\t[88.98948246300012, 22.396670227000115],\n\t\t\t\t[88.99216963700013, 22.406953837000103],\n\t\t\t\t[89.00074792500004, 22.420131328000068],\n\t\t\t\t[89.00250492300006, 22.427986145000105],\n\t\t\t\t[88.99837080900011, 22.45124053900004],\n\t\t\t\t[88.979974, 22.490928039000025],\n\t\t\t\t[88.97098230000006, 22.52792836500008],\n\t\t\t\t[88.95904504400005, 22.53681671100007],\n\t\t\t\t[88.9279875090001, 22.54813385000007],\n\t\t\t\t[88.95031172700004, 22.561983134000016],\n\t\t\t\t[88.95640954600003, 22.584979146000066],\n\t\t\t\t[88.95201704900012, 22.611902568000076],\n\t\t\t\t[88.9423535570001, 22.637482402000032],\n\t\t\t\t[88.93000288900004, 22.658618063000077],\n\t\t\t\t[88.92592045100014, 22.680838928000114],\n\t\t\t\t[88.92250980600011, 22.69370636000012],\n\t\t\t\t[88.91057255100009, 22.722593486000065],\n\t\t\t\t[88.90814375800011, 22.74078359000002],\n\t\t\t\t[88.91496504800006, 22.75440033000011],\n\t\t\t\t[88.92623051000004, 22.767035218000032],\n\t\t\t\t[88.9368758550001, 22.782331441000096],\n\t\t\t\t[88.94121667500008, 22.795663961000017],\n\t\t\t\t[88.94514408400005, 22.815094300000098],\n\t\t\t\t[88.94679773000013, 22.834524638000076],\n\t\t\t\t[88.94452396600008, 22.848012187000037],\n\t\t\t\t[88.93310347500011, 22.85811492900008],\n\t\t\t\t[88.90514652600007, 22.86643483500005],\n\t\t\t\t[88.89346765200008, 22.879638164000127],\n\t\t\t\t[88.87217696100004, 22.926767070000054],\n\t\t\t\t[88.86173832200006, 22.942399190000074],\n\t\t\t\t[88.84277307100012, 22.964568380000017],\n\t\t\t\t[88.83879398700009, 22.975808004000058],\n\t\t\t\t[88.83941410300014, 22.995367534000067],\n\t\t\t\t[88.84871586100007, 23.02384124800001],\n\t\t\t\t[88.85129968300004, 23.07513010700005],\n\t\t\t\t[88.86478723200014, 23.10027069100009],\n\t\t\t\t[88.91909916200007, 23.153859152000038],\n\t\t\t\t[88.94586755400007, 23.174348857000027],\n\t\t\t\t[88.95470422400007, 23.18380564400009],\n\t\t\t\t[88.95982019100006, 23.19445098900006],\n\t\t\t\t[88.9599752200001, 23.2026933800001],\n\t\t\t\t[88.95423913600013, 23.207421773000092],\n\t\t\t\t[88.92695398000012, 23.206517436000055],\n\t\t\t\t[88.91806563300008, 23.208584493],\n\t\t\t\t[88.90964237500003, 23.212434388000062],\n\t\t\t\t[88.83962080900011, 23.234810283000044],\n\t\t\t\t[88.82267093900009, 23.237962545000087],\n\t\t\t\t[88.80954512500011, 23.236050517000066],\n\t\t\t\t[88.80096683800008, 23.23075368300003],\n\t\t\t\t[88.79419722500006, 23.224965922000067],\n\t\t\t\t[88.78618737800008, 23.221529439000037],\n\t\t\t\t[88.77569706300011, 23.22163279200005],\n\t\t\t\t[88.71001631700005, 23.241218160000088],\n\t\t\t\t[88.69658044500011, 23.252354432000104],\n\t\t\t\t[88.68660689300003, 23.271603902000024],\n\t\t\t\t[88.68593510000005, 23.293308004000025],\n\t\t\t\t[88.69503015100008, 23.312609152000064],\n\t\t\t\t[88.71926639800006, 23.348291728000063],\n\t\t\t\t[88.76789392100011, 23.467276713],\n\t\t\t\t[88.77016768400011, 23.48882578600005],\n\t\t\t\t[88.7568351650001, 23.49879933700005],\n\t\t\t\t[88.74370935100012, 23.489316711000086],\n\t\t\t\t[88.73192712400004, 23.472625224000055],\n\t\t\t\t[88.71942142800003, 23.468103536000015],\n\t\t\t\t[88.70464196800003, 23.495181986000077],\n\t\t\t\t[88.69378991700006, 23.499807028000035],\n\t\t\t\t[88.66448938000008, 23.518307190000073],\n\t\t\t\t[88.64764286400003, 23.535076193000023],\n\t\t\t\t[88.62423344000007, 23.573859355000067],\n\t\t\t\t[88.6092472740001, 23.588793844000023],\n\t\t\t\t[88.60128910400005, 23.59034413700003],\n\t\t\t\t[88.58154870600009, 23.58832875600008],\n\t\t\t\t[88.57142012600013, 23.592333679000077],\n\t\t\t\t[88.56170495600009, 23.602023010000025],\n\t\t\t\t[88.5610848390001, 23.608611756000087],\n\t\t\t\t[88.56439213100009, 23.61620819100007],\n\t\t\t\t[88.56635583500014, 23.628739726000063],\n\t\t\t\t[88.56123986800003, 23.632486268],\n\t\t\t\t[88.55095625800004, 23.6344241340001],\n\t\t\t\t[88.54155114800011, 23.63876495400008],\n\t\t\t\t[88.54010420800012, 23.64995290100005],\n\t\t\t\t[88.56118819200003, 23.74100677500006],\n\t\t\t\t[88.55974125200004, 23.75028269500008],\n\t\t\t\t[88.55250655100008, 23.765423890000093],\n\t\t\t\t[88.55271325700005, 23.774984029],\n\t\t\t\t[88.55767419400007, 23.785681051000026],\n\t\t\t\t[88.57235030200007, 23.806894226000068],\n\t\t\t\t[88.57751794500007, 23.818521424000025],\n\t\t\t\t[88.57762129700012, 23.827616476000102],\n\t\t\t\t[88.5754508870001, 23.836556499000025],\n\t\t\t\t[88.57436568200012, 23.845625712000086],\n\t\t\t\t[88.57762129700012, 23.855160014000077],\n\t\t\t\t[88.59358931500003, 23.866916402000086],\n\t\t\t\t[88.61317468300007, 23.867846578000027],\n\t\t\t\t[88.63394860900007, 23.866141256000063],\n\t\t\t\t[88.65312056500011, 23.869784445000064],\n\t\t\t\t[88.66650476100006, 23.87949961400001],\n\t\t\t\t[88.70443526200006, 23.913709412000102],\n\t\t\t\t[88.71415043100006, 23.925155742000115],\n\t\t\t\t[88.71714766500003, 23.9431391400001],\n\t\t\t\t[88.71435713700004, 23.964403992000072],\n\t\t\t\t[88.70836267100003, 23.98355011000008],\n\t\t\t\t[88.70159305800007, 23.995280660000063],\n\t\t\t\t[88.7138403730001, 24.01468516100003],\n\t\t\t\t[88.72546757000009, 24.028896179000085],\n\t\t\t\t[88.72500248200004, 24.03837880500008],\n\t\t\t\t[88.70092126500009, 24.043649801000086],\n\t\t\t\t[88.69782067900007, 24.05625885000002],\n\t\t\t\t[88.67901045700006, 24.071219178],\n\t\t\t\t[88.67410119700003, 24.082639669000102],\n\t\t\t\t[88.67539310700005, 24.09183807400008],\n\t\t\t\t[88.68180098500011, 24.112663676000054],\n\t\t\t\t[88.68298954300013, 24.12429087300002],\n\t\t\t\t[88.67828698800014, 24.144651388000042],\n\t\t\t\t[88.67808028100006, 24.154289043000077],\n\t\t\t\t[88.68376468900004, 24.166536356000094],\n\t\t\t\t[88.69378991700006, 24.17532135100008],\n\t\t\t\t[88.71590743000007, 24.182917786000033],\n\t\t\t\t[88.73145573500011, 24.1897713150001],\n\t\t\t\t[88.73161706600013, 24.18984242800012],\n\t\t\t\t[88.73482100400008, 24.19842071500007],\n\t\t\t\t[88.74639652500014, 24.21407867500001],\n\t\t\t\t[88.74980717000005, 24.223251242000103],\n\t\t\t\t[88.74748173000006, 24.226971945000017],\n\t\t\t\t[88.74494958500009, 24.24337921200008],\n\t\t\t\t[88.74303755700004, 24.24753916500002],\n\t\t\t\t[88.73750817900003, 24.28709747300006],\n\t\t\t\t[88.71456384300012, 24.315416158000048],\n\t\t\t\t[88.68180098500011, 24.333890483000076],\n\t\t\t\t[88.66014856000004, 24.338257141000057],\n\t\t\t\t[88.64950321500004, 24.31536448200002],\n\t\t\t\t[88.63451705000006, 24.294125468000047],\n\t\t\t\t[88.61245121300004, 24.292885234000025],\n\t\t\t\t[88.56310021900003, 24.308207296000077],\n\t\t\t\t[88.49834965000008, 24.31097198500005],\n\t\t\t\t[88.47540531400011, 24.315467835000064],\n\t\t\t\t[88.40130131100011, 24.36941803000012],\n\t\t\t\t[88.13878503400008, 24.495250143000092],\n\t\t\t\t[88.10994958500004, 24.50098622700007],\n\t\t\t\t[88.10793420400006, 24.50796254500007],\n\t\t\t\t[88.0987874760001, 24.5224836230001],\n\t\t\t\t[88.09000248300003, 24.532999777000057],\n\t\t\t\t[88.08602339700013, 24.536720480000085],\n\t\t\t\t[88.08498986800004, 24.541733093000047],\n\t\t\t\t[88.08498986800004, 24.593874614000086],\n\t\t\t\t[88.08183760600008, 24.599869080000033],\n\t\t\t\t[88.06726485200005, 24.613666687000077],\n\t\t\t\t[88.05723962400003, 24.63410471600004],\n\t\t\t\t[88.04090987200004, 24.640435079000056],\n\t\t\t\t[88.02178959200006, 24.64560272200005],\n\t\t\t\t[88.02716394100014, 24.675730082000044],\n\t\t\t\t[88.0354321690001, 24.69381683400006],\n\t\t\t\t[88.04845463100014, 24.71120595300009],\n\t\t\t\t[88.05320886200013, 24.754975891000086],\n\t\t\t\t[88.06426761900013, 24.759161682000112],\n\t\t\t\t[88.07698002200004, 24.761177063000062],\n\t\t\t\t[88.0840080160001, 24.770452983000084],\n\t\t\t\t[88.08535160400004, 24.78401804600007],\n\t\t\t\t[88.08824548300004, 24.796136170000054],\n\t\t\t\t[88.09480839000008, 24.803112488000053],\n\t\t\t\t[88.10777917500013, 24.801097107000103],\n\t\t\t\t[88.11739099100004, 24.81926137300003],\n\t\t\t\t[88.13124027500004, 24.831767070000055],\n\t\t\t\t[88.14095544500003, 24.844582825000103],\n\t\t\t\t[88.13806156400005, 24.863496399000056],\n\t\t\t\t[88.12493575100012, 24.89814544700006],\n\t\t\t\t[88.12033654800007, 24.906775411000027],\n\t\t\t\t[88.11491052200006, 24.912020569000035],\n\t\t\t\t[88.11491052200006, 24.916413066000032],\n\t\t\t\t[88.16451989700005, 24.941114400000046],\n\t\t\t\t[88.1830200610001, 24.946979675000037],\n\t\t\t\t[88.20245039900004, 24.945300191000072],\n\t\t\t\t[88.21878015100009, 24.93514577200004],\n\t\t\t\t[88.23283614100012, 24.918273417000037],\n\t\t\t\t[88.24187951700009, 24.898765564000044],\n\t\t\t\t[88.24275801600004, 24.880601299000105],\n\t\t\t\t[88.25485030100009, 24.87995534300005],\n\t\t\t\t[88.29681156400011, 24.86969757100006],\n\t\t\t\t[88.31360640500009, 24.868302307000064],\n\t\t\t\t[88.32275313400004, 24.8746843470001],\n\t\t\t\t[88.34089156100009, 24.904139913],\n\t\t\t\t[88.37566980000014, 24.945610251000076],\n\t\t\t\t[88.38786543800006, 24.968761292000053],\n\t\t\t\t[88.39101770100007, 24.99509043400012],\n\t\t\t\t[88.41411706500008, 25.021522929000085],\n\t\t\t\t[88.42579593900007, 25.051056010000124],\n\t\t\t\t[88.43416752100012, 25.11665924100005],\n\t\t\t\t[88.4314803470001, 25.173038229000056],\n\t\t\t\t[88.44129886900004, 25.189729716],\n\t\t\t\t[88.47540531400011, 25.195104065000052],\n\t\t\t\t[88.49183842000008, 25.191124980000083],\n\t\t\t\t[88.5231543380001, 25.179807841000112],\n\t\t\t\t[88.5500260820001, 25.1731415820001],\n\t\t\t\t[88.55467696100004, 25.171126201000035],\n\t\t\t\t[88.55937951600004, 25.17076446600005],\n\t\t\t\t[88.57069665500012, 25.173244935000028],\n\t\t\t\t[88.57772465000005, 25.177482401000063],\n\t\t\t\t[88.59012699400012, 25.190143127000013],\n\t\t\t\t[88.59911869300004, 25.193140361000033],\n\t\t\t\t[88.6342586670001, 25.19226186200008],\n\t\t\t\t[88.66459273300012, 25.18688751200004],\n\t\t\t\t[88.72453739400004, 25.166475322000068],\n\t\t\t\t[88.78422367300004, 25.16094594400009],\n\t\t\t\t[88.79233687400006, 25.166578675000025],\n\t\t\t\t[88.80251713100012, 25.188127747000053],\n\t\t\t\t[88.8091317140001, 25.195259094],\n\t\t\t\t[88.81708988500009, 25.19680938700013],\n\t\t\t\t[88.82360111500003, 25.194845683],\n\t\t\t\t[88.83021569900012, 25.191331686000026],\n\t\t\t\t[88.89863529500013, 25.169317526000057],\n\t\t\t\t[88.92416345200007, 25.167870585000074],\n\t\t\t\t[88.90964237500003, 25.189161275000046],\n\t\t\t\t[88.92788415600006, 25.192726949000118],\n\t\t\t\t[88.93077803600005, 25.202648825000026],\n\t\t\t\t[88.9279875090001, 25.215929667000026],\n\t\t\t\t[88.9290727130001, 25.229417216000073],\n\t\t\t\t[88.93775435400005, 25.240165914],\n\t\t\t\t[88.97532312000004, 25.265228984000103],\n\t\t\t\t[88.98235111500009, 25.27489247700005],\n\t\t\t\t[88.98493493700005, 25.284969381000067],\n\t\t\t\t[88.98271285000004, 25.29447784400007],\n\t\t\t\t[88.97532312000004, 25.302642721000083],\n\t\t\t\t[88.92648889200007, 25.300472310000075],\n\t\t\t\t[88.90287276200007, 25.30341786700008],\n\t\t\t\t[88.88612959800014, 25.31907582600006],\n\t\t\t\t[88.88018680800008, 25.32346832300003],\n\t\t\t\t[88.85925785400013, 25.32470855700008],\n\t\t\t\t[88.84902592000003, 25.327189026000056],\n\t\t\t\t[88.84199792500004, 25.332821757000076],\n\t\t\t\t[88.81833011900011, 25.35964182600007],\n\t\t\t\t[88.81404097600006, 25.370390524000086],\n\t\t\t\t[88.81326582800011, 25.380054016000102],\n\t\t\t\t[88.81037194800012, 25.388425598000097],\n\t\t\t\t[88.79962325000014, 25.39560862300003],\n\t\t\t\t[88.79931319200006, 25.401706442000105],\n\t\t\t\t[88.81631473800007, 25.437208151000036],\n\t\t\t\t[88.81491947500007, 25.45860219300006],\n\t\t\t\t[88.80582442200011, 25.471676331000097],\n\t\t\t\t[88.79311202000014, 25.481959941000085],\n\t\t\t\t[88.78096805800004, 25.495189108000105],\n\t\t\t\t[88.77233809500012, 25.501958720000047],\n\t\t\t\t[88.74195235200006, 25.51275909400006],\n\t\t\t\t[88.74257246900004, 25.495189108000105],\n\t\t\t\t[88.73265059500011, 25.49100331700005],\n\t\t\t\t[88.72314213100003, 25.49141672800006],\n\t\t\t\t[88.71415043100006, 25.492811992000057],\n\t\t\t\t[88.70619226100013, 25.49167511000003],\n\t\t\t\t[88.69565026900005, 25.48361358600006],\n\t\t\t\t[88.68707198100003, 25.47389841700003],\n\t\t\t\t[88.67808028100006, 25.465888570000047],\n\t\t\t\t[88.66634973200013, 25.46289133800012],\n\t\t\t\t[88.64542077600004, 25.46733551000004],\n\t\t\t\t[88.61317468300007, 25.486404114000024],\n\t\t\t\t[88.59358931500003, 25.495085755000062],\n\t\t\t\t[88.55095625800004, 25.49648101800004],\n\t\t\t\t[88.53028568600013, 25.500201721000067],\n\t\t\t\t[88.52046716400008, 25.50929677400002],\n\t\t\t\t[88.51276737500007, 25.523714498000047],\n\t\t\t\t[88.48558557100012, 25.542628072000085],\n\t\t\t\t[88.47540531400011, 25.56257517600001],\n\t\t\t\t[88.43778487200012, 25.579835104],\n\t\t\t\t[88.42378055900008, 25.592237447000073],\n\t\t\t\t[88.41943973800011, 25.653784078000072],\n\t\t\t\t[88.39298140400012, 25.680759176000024],\n\t\t\t\t[88.32027266500006, 25.725252584000103],\n\t\t\t\t[88.25991459200009, 25.789021301000034],\n\t\t\t\t[88.22746179300003, 25.80426584900006],\n\t\t\t\t[88.18271000200008, 25.792431946000065],\n\t\t\t\t[88.16622522000011, 25.78364695300006],\n\t\t\t\t[88.14643314600005, 25.77574045800013],\n\t\t\t\t[88.12772627800007, 25.77491363500009],\n\t\t\t\t[88.11491052200006, 25.787264303000043],\n\t\t\t\t[88.1080375570001, 25.806281230000124],\n\t\t\t\t[88.10333500200005, 25.814807841000047],\n\t\t\t\t[88.08757369000006, 25.830982564000024],\n\t\t\t\t[88.08757369000006, 25.839974264000077],\n\t\t\t\t[88.08896895400005, 25.84865590400004],\n\t\t\t\t[88.08204431200005, 25.86384877600007],\n\t\t\t\t[88.07439620000008, 25.90813547800009],\n\t\t\t\t[88.07739343300005, 25.91278635700006],\n\t\t\t\t[88.08266442900003, 25.9159386190001],\n\t\t\t\t[88.08803877800005, 25.923224996],\n\t\t\t\t[88.10653894000012, 25.97996571900002],\n\t\t\t\t[88.12586592600007, 26.013400371],\n\t\t\t\t[88.1510323490001, 26.031332093000074],\n\t\t\t\t[88.15790531400006, 26.050452373000056],\n\t\t\t\t[88.15640669800007, 26.061407776000053],\n\t\t\t\t[88.15098067200006, 26.066988830000057],\n\t\t\t\t[88.14477950000008, 26.0705028280001],\n\t\t\t\t[88.14116215000013, 26.075463766000055],\n\t\t\t\t[88.13992191600005, 26.085333964000043],\n\t\t\t\t[88.14136885600004, 26.090501607000036],\n\t\t\t\t[88.14446944200012, 26.095875957000104],\n\t\t\t\t[88.15563155100006, 26.128483785000057],\n\t\t\t\t[88.16379642800007, 26.140472717000122],\n\t\t\t\t[88.19692102100004, 26.159644674000035],\n\t\t\t\t[88.20565433800004, 26.16641428700008],\n\t\t\t\t[88.21195886300006, 26.173752340000064],\n\t\t\t\t[88.21888350500012, 26.180160217000022],\n\t\t\t\t[88.22978723200009, 26.18403595000005],\n\t\t\t\t[88.25030277600007, 26.18801503500005],\n\t\t\t\t[88.30869714400012, 26.206101787000065],\n\t\t\t\t[88.32626713100012, 26.215920309000026],\n\t\t\t\t[88.33453536000013, 26.23080312100008],\n\t\t\t\t[88.33293339100004, 26.267235006000064],\n\t\t\t\t[88.33660241700011, 26.281807760000035],\n\t\t\t\t[88.35169193600012, 26.300979717000033],\n\t\t\t\t[88.36678145400003, 26.31343373600002],\n\t\t\t\t[88.41380700700006, 26.340202129000076],\n\t\t\t\t[88.42119673700012, 26.348728740000112],\n\t\t\t\t[88.4260026450001, 26.35792714500009],\n\t\t\t\t[88.43168705300013, 26.362216289000074],\n\t\t\t\t[88.44202233900006, 26.356118470000112],\n\t\t\t\t[88.44863692200005, 26.353431295000078],\n\t\t\t\t[88.4579903560001, 26.353017883000078],\n\t\t\t\t[88.46791223200006, 26.35405141200006],\n\t\t\t\t[88.47540531400011, 26.35580841100004],\n\t\t\t\t[88.49762618100004, 26.352707825],\n\t\t\t\t[88.49545577000009, 26.378080953000094],\n\t\t\t\t[88.47540531400011, 26.432031148000036],\n\t\t\t\t[88.46114261900004, 26.453890280000067],\n\t\t\t\t[88.43458093200013, 26.465155741000032],\n\t\t\t\t[88.37691003500004, 26.475335999000023],\n\t\t\t\t[88.35355228700013, 26.484586080000028],\n\t\t\t\t[88.34652429200008, 26.484017639000072],\n\t\t\t\t[88.34301029400007, 26.477196351000103],\n\t\t\t\t[88.34021976700006, 26.454148662000065],\n\t\t\t\t[88.33562056500006, 26.44820587200003],\n\t\t\t\t[88.32254642700008, 26.451771546000103],\n\t\t\t\t[88.31510502100008, 26.465052389],\n\t\t\t\t[88.31386478700006, 26.481537170000095],\n\t\t\t\t[88.31934248900012, 26.494921367000032],\n\t\t\t\t[88.33236495000006, 26.514661764],\n\t\t\t\t[88.35282881700005, 26.578688864000085],\n\t\t\t\t[88.36027022300004, 26.59310658800011],\n\t\t\t\t[88.37251753700008, 26.611606751000025],\n\t\t\t\t[88.38528161700003, 26.623544007000064],\n\t\t\t\t[88.39437666800012, 26.61801462800007],\n\t\t\t\t[88.39592696100004, 26.599566142000057],\n\t\t\t\t[88.39499678600009, 26.578378805000014],\n\t\t\t\t[88.39789066600008, 26.558690084000048],\n\t\t\t\t[88.41101648000011, 26.545099182000072],\n\t\t\t\t[88.44646651200009, 26.53553904300007],\n\t\t\t\t[88.46238285300007, 26.528821106000052],\n\t\t\t\t[88.47540531400011, 26.514971823000067],\n\t\t\t\t[88.48791101100011, 26.50577341800009],\n\t\t\t\t[88.49865970900004, 26.4948696900001],\n\t\t\t\t[88.50682458500006, 26.487634989000057],\n\t\t\t\t[88.52682336400011, 26.475387676000125],\n\t\t\t\t[88.54976770000013, 26.466654358000042],\n\t\t\t\t[88.55798425300009, 26.465724182000102],\n\t\t\t\t[88.57917159000004, 26.466034241000088],\n\t\t\t\t[88.59116052200005, 26.46122833300008],\n\t\t\t\t[88.59787845900007, 26.451461487000117],\n\t\t\t\t[88.60356286700005, 26.44019602500005],\n\t\t\t\t[88.6115210370001, 26.43084259100003],\n\t\t\t\t[88.62237308800007, 26.424538066000096],\n\t\t\t\t[88.63301843300013, 26.4200938930001],\n\t\t\t\t[88.65627282700007, 26.41513295500006],\n\t\t\t\t[88.65193200700008, 26.407071432000052],\n\t\t\t\t[88.64986495000005, 26.3983897910001],\n\t\t\t\t[88.6522420660001, 26.39151682600003],\n\t\t\t\t[88.66107873600009, 26.388881328000124],\n\t\t\t\t[88.66852014200009, 26.385729065000064],\n\t\t\t\t[88.66743493700011, 26.36815907800009],\n\t\t\t\t[88.67337772700012, 26.360717672000064],\n\t\t\t\t[88.69627038600004, 26.350279032000046],\n\t\t\t\t[88.70970625900009, 26.34061554],\n\t\t\t\t[88.71223840300007, 26.328264872000048],\n\t\t\t\t[88.70298832200007, 26.309661357],\n\t\t\t\t[88.69012089100005, 26.299842835000035],\n\t\t\t\t[88.65327559400004, 26.283099671000073],\n\t\t\t\t[88.64583418800004, 26.27601999900004],\n\t\t\t\t[88.6634041750001, 26.26444447900009],\n\t\t\t\t[88.74794681800006, 26.292504782000023],\n\t\t\t\t[88.78401696800006, 26.27994740900003],\n\t\t\t\t[88.79202681500004, 26.264599508000046],\n\t\t\t\t[88.7984863690001, 26.247649638000055],\n\t\t\t\t[88.80799483200008, 26.23343861900007],\n\t\t\t\t[88.82484134900005, 26.22656565400011],\n\t\t\t\t[88.84065433800009, 26.2320433550001],\n\t\t\t\t[88.85564050400012, 26.2651162720001],\n\t\t\t\t[88.8757943110001, 26.27736358600002],\n\t\t\t\t[88.90271773300003, 26.272919414000015],\n\t\t\t\t[88.94684940600013, 26.232921855000043],\n\t\t\t\t[88.97532312000004, 26.22434356700002],\n\t\t\t\t[89.01945479300014, 26.23447214800005],\n\t\t\t\t[89.03971195500003, 26.24718455000003],\n\t\t\t\t[89.03433760600007, 26.26578806600007],\n\t\t\t\t[89.02353723100003, 26.2688369750001],\n\t\t\t\t[89.01159997600013, 26.2691987110001],\n\t\t\t\t[89.00436527500005, 26.275709941000073],\n\t\t\t\t[89.00798262600011, 26.29715566],\n\t\t\t\t[88.99862919200007, 26.291522929000067],\n\t\t\t\t[88.98968916900009, 26.289404195000074],\n\t\t\t\t[88.9817309980001, 26.291832987000063],\n\t\t\t\t[88.97532312000004, 26.29994618800005],\n\t\t\t\t[88.96602136200005, 26.328471578000105],\n\t\t\t\t[88.94121667500008, 26.340098775000072],\n\t\t\t\t[88.91243290200009, 26.348935445000066],\n\t\t\t\t[88.89186568200006, 26.368779196000062],\n\t\t\t\t[88.89124556500013, 26.38578074100006],\n\t\t\t\t[88.89946211800003, 26.40448761000006],\n\t\t\t\t[88.91196781400004, 26.421230774000023],\n\t\t\t\t[88.92457686400007, 26.43213450100008],\n\t\t\t\t[88.94100996900005, 26.439420878000064],\n\t\t\t\t[88.95015669700012, 26.436940410000076],\n\t\t\t\t[88.95930342700012, 26.428568828],\n\t\t\t\t[88.97532312000004, 26.417871806000093],\n\t\t\t\t[88.98653690600008, 26.4127041630001],\n\t\t\t\t[89.00178145400014, 26.397149557000077],\n\t\t\t\t[89.01087650500011, 26.390173239000077],\n\t\t\t\t[89.02178023300007, 26.38624582900009],\n\t\t\t\t[89.04374271700004, 26.381078186000096],\n\t\t\t\t[89.05263106300004, 26.374618632000036],\n\t\t\t\t[89.05728194200003, 26.362629700000085],\n\t\t\t\t[89.05407800300003, 26.353948059000018],\n\t\t\t\t[89.05521488500005, 26.347023417000045],\n\t\t\t\t[89.07185469600006, 26.34061554],\n\t\t\t\t[89.09572920800008, 26.33451772100004],\n\t\t\t\t[89.10291223200011, 26.327334696],\n\t\t\t\t[89.10353234900009, 26.313692118000077],\n\t\t\t\t[89.09479903200014, 26.30950632700005],\n\t\t\t\t[89.0803296310001, 26.315604146000013],\n\t\t\t\t[89.0688574620001, 26.314260559000033],\n\t\t\t\t[89.06942590300014, 26.287388815000057],\n\t\t\t\t[89.07588545700008, 26.271059062000106],\n\t\t\t\t[89.09588423700012, 26.24103505500004],\n\t\t\t\t[89.10337732000005, 26.22517039000003],\n\t\t\t\t[89.11169722500011, 26.16450225900006],\n\t\t\t\t[89.11919030800004, 26.1466222130001],\n\t\t\t\t[89.13159265100012, 26.133754781],\n\t\t\t\t[89.19784183700011, 26.107709859000025],\n\t\t\t\t[89.21262129800004, 26.098976543000063],\n\t\t\t\t[89.22305993600008, 26.086574198000065],\n\t\t\t\t[89.22926110800006, 26.067195537000103],\n\t\t\t\t[89.23763269000011, 26.058100484000036],\n\t\t\t\t[89.27297937100013, 26.043476054000067],\n\t\t\t\t[89.29690555800005, 26.0181546030001],\n\t\t\t\t[89.31514733900008, 26.006785787000084],\n\t\t\t\t[89.33530114700005, 25.998569235000062],\n\t\t\t\t[89.35147587100005, 25.996863912000023],\n\t\t\t\t[89.3677539470001, 26.005442200000047],\n\t\t\t\t[89.37974287900005, 26.015312399000024],\n\t\t\t\t[89.39142175300003, 26.015467428000065],\n\t\t\t\t[89.40661462500003, 25.995055237000102],\n\t\t\t\t[89.4112655030001, 25.993194885000023],\n\t\t\t\t[89.41612308700013, 25.992626444000066],\n\t\t\t\t[89.42118737800007, 25.993194885000023],\n\t\t\t\t[89.42635502100012, 25.994951884000088],\n\t\t\t\t[89.42640669700012, 25.995055237000102],\n\t\t\t\t[89.48061527500005, 25.999241028000043],\n\t\t\t\t[89.4856278900001, 25.998724263000028],\n\t\t\t\t[89.49064050300007, 25.997329],\n\t\t\t\t[89.49534305900005, 25.995055237000102],\n\t\t\t\t[89.50945072500008, 25.97262766500002],\n\t\t\t\t[89.51818404200003, 25.96208567400005],\n\t\t\t\t[89.52841597500003, 25.957124735000022],\n\t\t\t\t[89.54169681900004, 25.959708558],\n\t\t\t\t[89.54908654800005, 25.96885528600008],\n\t\t\t\t[89.55182539900011, 25.98151601200003],\n\t\t\t\t[89.55068851700008, 25.995055237000102],\n\t\t\t\t[89.55916345200006, 26.02223704],\n\t\t\t\t[89.60288171400009, 26.055258280000075],\n\t\t\t\t[89.61135664900007, 26.072208150000066],\n\t\t\t\t[89.60386356700013, 26.084662171000062],\n\t\t\t\t[89.5907894290001, 26.085023906000046],\n\t\t\t\t[89.57694014500004, 26.082646790000112],\n\t\t\t\t[89.56701827000012, 26.087090963000023],\n\t\t\t\t[89.56691491700008, 26.098976543000063],\n\t\t\t\t[89.57787032100009, 26.107244771000083],\n\t\t\t\t[89.59254642800005, 26.113962708000102],\n\t\t\t\t[89.60422530100004, 26.120732320000073],\n\t\t\t\t[89.58577681500003, 26.122902731000053],\n\t\t\t\t[89.56939538600005, 26.130085754],\n\t\t\t\t[89.56278080300007, 26.142591452000104],\n\t\t\t\t[89.57342614800007, 26.16072987900013],\n\t\t\t\t[89.57993737800012, 26.166104228000094],\n\t\t\t\t[89.58675866700008, 26.169204814000025],\n\t\t\t\t[89.59399336800004, 26.16972157800008],\n\t\t\t\t[89.6144055580001, 26.164192200000073],\n\t\t\t\t[89.61528405800004, 26.169101461000096],\n\t\t\t\t[89.60846276900008, 26.180676982000037],\n\t\t\t\t[89.60639571100012, 26.2110110470001],\n\t\t\t\t[89.61332035300012, 26.219382629000066],\n\t\t\t\t[89.63492110200008, 26.22584218300001],\n\t\t\t\t[89.65300785400007, 26.222689921000054],\n\t\t\t\t[89.65838220200004, 26.207858785000028],\n\t\t\t\t[89.6578286080001, 26.18717448300005],\n\t\t\t\t[89.65724532100006, 26.165380758000097],\n\t\t\t\t[89.65579838100007, 26.161298320000085],\n\t\t\t\t[89.65817549700012, 26.159231262000034],\n\t\t\t\t[89.6703711340001, 26.15411529600003],\n\t\t\t\t[89.67770918800011, 26.153133443000073],\n\t\t\t\t[89.69765629100004, 26.154787089000095],\n\t\t\t\t[89.70654463700004, 26.154166972000056],\n\t\t\t\t[89.7184818930001, 26.14553700800009],\n\t\t\t\t[89.72432133000007, 26.130654195000048],\n\t\t\t\t[89.72876550300009, 26.114169413000084],\n\t\t\t\t[89.73672367300003, 26.100578511],\n\t\t\t\t[89.74984948700012, 26.08388702400005],\n\t\t\t\t[89.75114139900006, 26.071536357000085],\n\t\t\t\t[89.74871260600008, 26.05903066000009],\n\t\t\t\t[89.75021122300012, 26.041564026000046],\n\t\t\t\t[89.75584395400011, 26.032417297000066],\n\t\t\t\t[89.77641117400003, 26.008232727000077],\n\t\t\t\t[89.78395593200008, 25.99510691300013],\n\t\t\t\t[89.78943363500014, 25.9879755650001],\n\t\t\t\t[89.79553145400013, 25.985960185000053],\n\t\t\t\t[89.80204268400007, 25.98864736000006],\n\t\t\t\t[89.80886397300003, 25.99510691300013],\n\t\t\t\t[89.80917403100011, 25.99510691300013],\n\t\t\t\t[89.80932906100008, 25.995210266000058],\n\t\t\t\t[89.81103438300005, 25.99603708900007],\n\t\t\t\t[89.81268802900007, 25.996347148000055],\n\t\t\t\t[89.81413496900007, 25.99614044200011],\n\t\t\t\t[89.8152718500001, 25.99510691300013],\n\t\t\t\t[89.82865604700004, 25.979397278000064],\n\t\t\t\t[89.82560713700008, 25.965703024000035],\n\t\t\t\t[89.81155114700005, 25.955212708000076],\n\t\t\t\t[89.79201745600005, 25.94911488900003],\n\t\t\t\t[89.81072432500014, 25.938779603000015],\n\t\t\t\t[89.82643396000003, 25.937487691000072],\n\t\t\t\t[89.83439213000008, 25.931751608000113],\n\t\t\t\t[89.83005131100009, 25.90798044900005],\n\t\t\t\t[89.7869531660001, 25.839147441000065],\n\t\t\t\t[89.78312911000006, 25.81444610700005],\n\t\t\t\t[89.80152592000013, 25.72468414400005],\n\t\t\t\t[89.82421187300008, 25.674092916000106],\n\t\t\t\t[89.83439213000008, 25.63476715100002],\n\t\t\t\t[89.82509037300014, 25.56448720300004],\n\t\t\t\t[89.82323002100003, 25.489142965000056],\n\t\t\t\t[89.80856794000005, 25.439507112000015],\n\t\t\t\t[89.80069909700012, 25.41286855100013],\n\t\t\t\t[89.79923403500004, 25.402892809000022],\n\t\t\t\t[89.79501469000007, 25.374162903000112],\n\t\t\t\t[89.79852868700004, 25.340056458000035],\n\t\t\t\t[89.80736535600005, 25.304503073],\n\t\t\t\t[89.81904423000009, 25.284969381000067],\n\t\t\t\t[89.83459883600011, 25.282437236000092],\n\t\t\t\t[89.87020389800011, 25.29556305000007],\n\t\t\t\t[89.90813440000011, 25.29690663700002],\n\t\t\t\t[90.13008467700013, 25.211588847000044],\n\t\t\t\t[90.28692264800003, 25.180066223000082],\n\t\t\t\t[90.36464400300014, 25.149990540000104],\n\t\t\t\t[90.39978397700008, 25.149008687000034],\n\t\t\t\t[90.50137984200012, 25.168800761000014],\n\t\t\t\t[90.58333866400005, 25.16203114900007],\n\t\t\t\t[90.62343957500008, 25.171436259000032],\n\t\t\t\t[90.6375989180001, 25.171074524000048],\n\t\t\t\t[90.64896773300012, 25.167818909000047],\n\t\t\t\t[90.67056848100009, 25.158775533],\n\t\t\t\t[90.70767216000013, 25.15298777300002],\n\t\t\t\t[90.71635380000009, 25.153556214000062],\n\t\t\t\t[90.72203820800007, 25.15660512300009],\n\t\t\t\t[90.73268355400006, 25.16688873300008],\n\t\t\t\t[90.73795454900005, 25.16942087900007],\n\t\t\t\t[90.75397424300013, 25.167560527000077],\n\t\t\t\t[90.76689335100014, 25.16053253200006],\n\t\t\t\t[90.77939904800013, 25.151954244000038],\n\t\t\t\t[90.7939718020001, 25.14539133700005],\n\t\t\t\t[90.82198042800007, 25.142290752000108],\n\t\t\t\t[90.93482138600007, 25.156359858000044],\n\t\t\t\t[90.9434200450001, 25.15743194600013],\n\t\t\t\t[90.97514937400013, 25.167818909000047],\n\t\t\t\t[91.13534631400006, 25.191228333000097],\n\t\t\t\t[91.19084680200012, 25.189471334000032],\n\t\t\t\t[91.20314579300009, 25.191331686000026],\n\t\t\t\t[91.22495324700009, 25.201615296000043],\n\t\t\t\t[91.23570194500013, 25.201925354000096],\n\t\t\t\t[91.28396773300005, 25.178981018000073],\n\t\t\t\t[91.43186568300013, 25.137949931000023],\n\t\t\t\t[91.47103641800004, 25.133919170000027],\n\t\t\t\t[91.4807515870001, 25.135262757000092],\n\t\t\t\t[91.50090539600006, 25.14115387],\n\t\t\t\t[91.51165409400011, 25.14249745700006],\n\t\t\t\t[91.52343632100008, 25.145184632000095],\n\t\t\t\t[91.54017948400013, 25.157638652000074],\n\t\t\t\t[91.5487577720001, 25.161100973000103],\n\t\t\t\t[91.56612105300007, 25.15996409100002],\n\t\t\t\t[91.57345910700008, 25.152264302000034],\n\t\t\t\t[91.5801770430001, 25.140895488000027],\n\t\t\t\t[91.59619673700007, 25.128906555000086],\n\t\t\t\t[91.61314660700009, 25.12513417600006],\n\t\t\t\t[91.63867476400003, 25.12404897100005],\n\t\t\t\t[91.66203251100006, 25.127201233],\n\t\t\t\t[91.67226444500005, 25.13650299100003],\n\t\t\t\t[91.67743208800005, 25.152626038000037],\n\t\t\t\t[91.68890425700005, 25.15298777300002],\n\t\t\t\t[91.70182336400006, 25.14714833600003],\n\t\t\t\t[91.7107117110001, 25.14466786800007],\n\t\t\t\t[91.71773970600009, 25.149835511000063],\n\t\t\t\t[91.72373417200004, 25.161927796000057],\n\t\t\t\t[91.73014204900005, 25.167457174000063],\n\t\t\t\t[91.74533492100011, 25.169369202000055],\n\t\t\t\t[91.79370406100003, 25.16533844000007],\n\t\t\t\t[91.90057092300009, 25.177585754000106],\n\t\t\t\t[91.95627811700012, 25.169782613000066],\n\t\t\t\t[91.97508833800003, 25.175363668],\n\t\t\t\t[92.00175337700006, 25.18296010400006],\n\t\t\t\t[92.03399947100013, 25.181668193000107],\n\t\t\t\t[92.06603886000005, 25.174536845000077],\n\t\t\t\t[92.09291060400011, 25.164718323],\n\t\t\t\t[92.1004553630001, 25.159085592000068],\n\t\t\t\t[92.11037723800007, 25.144874573000024],\n\t\t\t\t[92.11616499900003, 25.139448548000033],\n\t\t\t\t[92.12412316900003, 25.136968079000056],\n\t\t\t\t[92.13859257000013, 25.136399638000015],\n\t\t\t\t[92.14551721200013, 25.13169708200003],\n\t\t\t\t[92.15099491400008, 25.129733379000086],\n\t\t\t\t[92.16474084500004, 25.133557434000053],\n\t\t\t\t[92.17269901600008, 25.131955465000104],\n\t\t\t\t[92.17921024600008, 25.126684469000068],\n\t\t\t\t[92.19409305900012, 25.109166159000026],\n\t\t\t\t[92.20804569500012, 25.098107401],\n\t\t\t\t[92.22013798000012, 25.090381775000097],\n\t\t\t\t[92.2336772060001, 25.08495575000005],\n\t\t\t\t[92.25155725100012, 25.080795797000107],\n\t\t\t\t[92.30354374200004, 25.07428456600003],\n\t\t\t\t[92.31212203000007, 25.0686001590001],\n\t\t\t\t[92.32814172400003, 25.048007101000096],\n\t\t\t\t[92.35625370300005, 25.037000021],\n\t\t\t\t[92.38105839100012, 25.02343495700002],\n\t\t\t\t[92.38493703500006, 25.004773236000048],\n\t\t\t\t[92.38687592400004, 24.9954444560001],\n\t\t\t\t[92.38692635100006, 24.99520183],\n\t\t\t\t[92.38694950400003, 24.99509043400012],\n\t\t\t\t[92.39470096900004, 24.993230082000096],\n\t\t\t\t[92.41186000600004, 24.987527227000058],\n\t\t\t\t[92.41213950000014, 24.987434336],\n\t\t\t\t[92.4122709560001, 24.987390646000037],\n\t\t\t\t[92.41246032100014, 24.98436081700008],\n\t\t\t\t[92.41247766200007, 24.98408335400002],\n\t\t\t\t[92.44444627300004, 24.962427197000082],\n\t\t\t\t[92.44451704900007, 24.96237925200002],\n\t\t\t\t[92.45376877000012, 24.9582310630001],\n\t\t\t\t[92.45402551300003, 24.95811594700008],\n\t\t\t\t[92.45782812800007, 24.953557685000035],\n\t\t\t\t[92.45805627500005, 24.953284201000045],\n\t\t\t\t[92.45002848600006, 24.94663618700004],\n\t\t\t\t[92.4497880460001, 24.946437073000098],\n\t\t\t\t[92.4742723330001, 24.936715371000062],\n\t\t\t\t[92.4743860270001, 24.93667022800004],\n\t\t\t\t[92.48379113800013, 24.92822113000004],\n\t\t\t\t[92.49126714800008, 24.912424218000055],\n\t\t\t\t[92.49133589700006, 24.91227895100012],\n\t\t\t\t[92.49453983600006, 24.894863993000072],\n\t\t\t\t[92.49154260200004, 24.883727722000046],\n\t\t\t\t[92.47769331900008, 24.863909810000067],\n\t\t\t\t[92.44203658000009, 24.855409037000058],\n\t\t\t\t[92.38074833200005, 24.836702169000077],\n\t\t\t\t[92.37092980900007, 24.837916565000015],\n\t\t\t\t[92.36359175600006, 24.84101715100006],\n\t\t\t\t[92.36350740900014, 24.841120014000026],\n\t\t\t\t[92.35935428900012, 24.846184794000052],\n\t\t\t\t[92.35932057700006, 24.84642836600004],\n\t\t\t\t[92.35832076000014, 24.853652039000096],\n\t\t\t\t[92.35814605200005, 24.853748899000024],\n\t\t\t\t[92.29041792900011, 24.891298320000104],\n\t\t\t\t[92.29024450000003, 24.891351286000045],\n\t\t\t\t[92.2521773680001, 24.902977194000087],\n\t\t\t\t[92.2230318610001, 24.89137583400013],\n\t\t\t\t[92.21765751100003, 24.874580994000084],\n\t\t\t\t[92.22175905800003, 24.857046883000052],\n\t\t\t\t[92.22179162600014, 24.856907654000068],\n\t\t\t\t[92.23492786100007, 24.82499071000008],\n\t\t\t\t[92.23502079300005, 24.824764914000028],\n\t\t\t\t[92.23688114400005, 24.808590190000032],\n\t\t\t\t[92.23646773300004, 24.793035584],\n\t\t\t\t[92.23378055900008, 24.777532654000098],\n\t\t\t\t[92.18293094900008, 24.647256368000015],\n\t\t\t\t[92.1734224860001, 24.60839569200006],\n\t\t\t\t[92.16887496000004, 24.574315084000077],\n\t\t\t\t[92.16360396300013, 24.55919972800008],\n\t\t\t\t[92.1531653240001, 24.54454945900001],\n\t\t\t\t[92.14997986200007, 24.54218295400004],\n\t\t\t\t[92.13859257000013, 24.533723246000065],\n\t\t\t\t[92.12319299300003, 24.525377503000087],\n\t\t\t\t[92.11089400300011, 24.514292908000087],\n\t\t\t\t[92.10593306500004, 24.495250143000092],\n\t\t\t\t[92.11120406100008, 24.43429779100005],\n\t\t\t\t[92.10758671100012, 24.40597910600006],\n\t\t\t\t[92.08825972500006, 24.38163950700003],\n\t\t\t\t[92.06273156800012, 24.37102],\n\t\t\t\t[92.03337935400003, 24.368849590000067],\n\t\t\t\t[91.9499735920001, 24.37538665800004],\n\t\t\t\t[91.94883671100007, 24.363526917000016],\n\t\t\t\t[91.97136763500009, 24.329678853000118],\n\t\t\t\t[91.97219445900004, 24.316062114000104],\n\t\t\t\t[91.95307417800012, 24.322986755],\n\t\t\t\t[91.93095666500011, 24.336965231000093],\n\t\t\t\t[91.92186161300003, 24.34450999000005],\n\t\t\t\t[91.89984745300006, 24.338050435000085],\n\t\t\t\t[91.89643680900014, 24.32011871400003],\n\t\t\t\t[91.90687544800005, 24.28035369900003],\n\t\t\t\t[91.90594527200011, 24.260639140000066],\n\t\t\t\t[91.88434452300004, 24.17555389500005],\n\t\t\t\t[91.87710982300007, 24.158035584000075],\n\t\t\t\t[91.86450077300009, 24.15059417700006],\n\t\t\t\t[91.84424361200007, 24.155322571000042],\n\t\t\t\t[91.81375451700006, 24.183124492],\n\t\t\t\t[91.81137740100013, 24.192038676000024],\n\t\t\t\t[91.8097237550001, 24.214543763000037],\n\t\t\t\t[91.80703658100003, 24.221132507000036],\n\t\t\t\t[91.79659794100013, 24.221597595000063],\n\t\t\t\t[91.73293257600011, 24.234284159000097],\n\t\t\t\t[91.72301070200012, 24.22097747800008],\n\t\t\t\t[91.72580122900007, 24.202063904000042],\n\t\t\t\t[91.73200240000006, 24.181677551000107],\n\t\t\t\t[91.73262251800003, 24.164314270000077],\n\t\t\t\t[91.72115035100012, 24.148992208000024],\n\t\t\t\t[91.70368371600006, 24.14294606500009],\n\t\t\t\t[91.68415002500006, 24.145478211000082],\n\t\t\t\t[91.66616662600006, 24.155916850000025],\n\t\t\t\t[91.65717492700003, 24.17136810400011],\n\t\t\t\t[91.63950158700004, 24.211701559000076],\n\t\t\t\t[91.62906294800007, 24.21531890900006],\n\t\t\t\t[91.62451542100007, 24.203459168000037],\n\t\t\t\t[91.61376672300014, 24.140103862],\n\t\t\t\t[91.60601525900012, 24.11886484800003],\n\t\t\t\t[91.59650679500004, 24.104989726000056],\n\t\t\t\t[91.58183068900007, 24.096101380000064],\n\t\t\t\t[91.55867964700008, 24.089667663000014],\n\t\t\t\t[91.51754520700007, 24.085197652000076],\n\t\t\t\t[91.48044152900013, 24.088014018000067],\n\t\t\t\t[91.40458052600007, 24.103129374000062],\n\t\t\t\t[91.36303267500011, 24.099847921000062],\n\t\t\t\t[91.35083703600009, 24.074242249000022],\n\t\t\t\t[91.34928674300005, 24.036053366000132],\n\t\t\t\t[91.3390548100001, 23.995228984000036],\n\t\t\t\t[91.32706587800004, 23.987865092000035],\n\t\t\t\t[91.31621382700007, 23.989467062000088],\n\t\t\t\t[91.30843257700013, 23.992501035000103],\n\t\t\t\t[91.30494836400004, 23.993859558000068],\n\t\t\t\t[91.29161584500008, 23.994815573000025],\n\t\t\t\t[91.27414921100006, 23.988226827000048],\n\t\t\t\t[91.26092004400004, 23.97727142400008],\n\t\t\t\t[91.25037805200003, 23.96404225700006],\n\t\t\t\t[91.21627160700012, 23.90838673900005],\n\t\t\t\t[91.21193078600004, 23.89445994100008],\n\t\t\t\t[91.2127576090001, 23.880739848000033],\n\t\t\t\t[91.22402307100003, 23.857485453000024],\n\t\t\t\t[91.22815718600009, 23.844979757000104],\n\t\t\t\t[91.2252633060001, 23.82614369800011],\n\t\t\t\t[91.20521285000012, 23.77157338500008],\n\t\t\t\t[91.19498091600013, 23.755166118000105],\n\t\t\t\t[91.17658410700005, 23.746536154000083],\n\t\t\t\t[91.15756717900007, 23.744985861000046],\n\t\t\t\t[91.14175419100008, 23.73989573200008],\n\t\t\t\t[91.13234908000004, 23.720646261000056],\n\t\t\t\t[91.13658654800008, 23.698890483000028],\n\t\t\t\t[91.15239953700006, 23.691009827000087],\n\t\t\t\t[91.16893599500008, 23.685377096000067],\n\t\t\t\t[91.1752405200001, 23.67031341600007],\n\t\t\t\t[91.1664555260001, 23.654087016000048],\n\t\t\t\t[91.15229618400014, 23.655094707000032],\n\t\t\t\t[91.13968713400004, 23.65357025100012],\n\t\t\t\t[91.13627648900012, 23.629514872000087],\n\t\t\t\t[91.14082401500013, 23.61209991500006],\n\t\t\t\t[91.16986617000003, 23.561973776000045],\n\t\t\t\t[91.17751428300011, 23.544274597000125],\n\t\t\t\t[91.1858858650001, 23.511563416000044],\n\t\t\t\t[91.19508426900006, 23.495181986000077],\n\t\t\t\t[91.20335249900012, 23.487921448000108],\n\t\t\t\t[91.22081913300008, 23.47789622000009],\n\t\t\t\t[91.22733036300014, 23.4687753300001],\n\t\t\t\t[91.22970747900007, 23.461178894000042],\n\t\t\t\t[91.23446171100005, 23.436270854000085],\n\t\t\t\t[91.24789758300005, 23.393766989000127],\n\t\t\t\t[91.2581295170001, 23.37363901800005],\n\t\t\t\t[91.27094527200006, 23.3645956430001],\n\t\t\t\t[91.28396773300005, 23.36144338000004],\n\t\t\t\t[91.28727502500004, 23.35555226700005],\n\t\t\t\t[91.28293420400007, 23.34764577300008],\n\t\t\t\t[91.27290897700004, 23.338499044000017],\n\t\t\t\t[91.26577762900007, 23.329352315000037],\n\t\t\t\t[91.26753462700009, 23.321549174],\n\t\t\t\t[91.27290897700004, 23.313487651000017],\n\t\t\t\t[91.27724979600009, 23.303255717000027],\n\t\t\t\t[91.30050419200012, 23.14230946900001],\n\t\t\t\t[91.31352665200006, 23.101045838000076],\n\t\t\t\t[91.33740116400003, 23.071073507000037],\n\t\t\t\t[91.37088749200007, 23.06277944],\n\t\t\t\t[91.37460819500006, 23.095723165000052],\n\t\t\t\t[91.35590132700008, 23.17964569100006],\n\t\t\t\t[91.35569462100011, 23.224139099000027],\n\t\t\t\t[91.36096561700003, 23.247522685],\n\t\t\t\t[91.37212772600009, 23.261888733000077],\n\t\t\t\t[91.39434859200003, 23.2626638790001],\n\t\t\t\t[91.41357222500005, 23.248633728000087],\n\t\t\t\t[91.42814498000013, 23.229513449000095],\n\t\t\t\t[91.43651656100008, 23.214863180000023],\n\t\t\t\t[91.43620650200012, 23.215715841000062],\n\t\t\t\t[91.43961714700004, 23.22264048200013],\n\t\t\t\t[91.43992720500012, 23.223518983000062],\n\t\t\t\t[91.44643843600005, 23.215534973],\n\t\t\t\t[91.44674849500007, 23.20879119900006],\n\t\t\t\t[91.44540490800011, 23.203029277],\n\t\t\t\t[91.44643843600005, 23.1978874710001],\n\t\t\t\t[91.46121789600011, 23.184425761000043],\n\t\t\t\t[91.46359501200004, 23.184115702000057],\n\t\t\t\t[91.47041630100011, 23.153290711000082],\n\t\t\t\t[91.47506717900006, 23.14308461500012],\n\t\t\t\t[91.49811486900012, 23.069962464000056],\n\t\t\t\t[91.50328251200011, 23.0444084680001],\n\t\t\t\t[91.50607303900006, 23.041178691000127],\n\t\t\t\t[91.51558150200009, 23.03880157500008],\n\t\t\t\t[91.51816532400005, 23.03508087200008],\n\t\t\t\t[91.51940555800007, 23.005625305000066],\n\t\t\t\t[91.52364302600006, 22.995212504000037],\n\t\t\t\t[91.53656213400006, 22.981854146],\n\t\t\t\t[91.54979130000004, 22.977229106000053],\n\t\t\t\t[91.5631238200001, 22.974981181000132],\n\t\t\t\t[91.57676639900006, 22.96880584800006],\n\t\t\t\t[91.5830709230001, 22.957798767000057],\n\t\t\t\t[91.58296757000005, 22.94790273100007],\n\t\t\t\t[91.58606815600012, 22.94446624800004],\n\t\t\t\t[91.60239790900005, 22.95296702100005],\n\t\t\t\t[91.60828902200006, 22.96033091300005],\n\t\t\t\t[91.61200972500006, 22.969839376000053],\n\t\t\t\t[91.61666060400012, 22.978055929000064],\n\t\t\t\t[91.62575565600008, 22.98154408800012],\n\t\t\t\t[91.63278365100012, 22.98030385300008],\n\t\t\t\t[91.63991499800005, 22.978004253000066],\n\t\t\t\t[91.64694299300004, 22.97658315000008],\n\t\t\t\t[91.65407434100007, 22.978055929000064],\n\t\t\t\t[91.66761356600006, 22.982629293000016],\n\t\t\t\t[91.69469201700014, 22.98813283300011],\n\t\t\t\t[91.70699100800005, 22.995367534000067],\n\t\t\t\t[91.7144324140001, 23.00311899800009],\n\t\t\t\t[91.73127893100008, 23.017330018000038],\n\t\t\t\t[91.73830692600006, 23.02466807100005],\n\t\t\t\t[91.75505009000011, 23.048232524000056],\n\t\t\t\t[91.75629032400008, 23.052159933000027],\n\t\t\t\t[91.75556685400005, 23.05683665000008],\n\t\t\t\t[91.75598026500006, 23.061539206000063],\n\t\t\t\t[91.76094120300013, 23.065492453000033],\n\t\t\t\t[91.76424849400013, 23.065647481000084],\n\t\t\t\t[91.77375695800004, 23.06489817300006],\n\t\t\t\t[91.77623742700007, 23.065259909000062],\n\t\t\t\t[91.7913269450001, 23.080375265000086],\n\t\t\t\t[91.79556441200003, 23.08949615500005],\n\t\t\t\t[91.79194706200013, 23.101149190000015],\n\t\t\t\t[91.77902795400013, 23.131767476000036],\n\t\t\t\t[91.76393843600005, 23.200626323000037],\n\t\t\t\t[91.74915897700004, 23.232407329000083],\n\t\t\t\t[91.74368127400004, 23.27232737300004],\n\t\t\t\t[91.7625948490001, 23.321549174],\n\t\t\t\t[91.79163700400005, 23.368342183000024],\n\t\t\t\t[91.81768192600003, 23.40092417400008],\n\t\t\t\t[91.83380497300004, 23.413894959000103],\n\t\t\t\t[91.88909875500013, 23.43593495800009],\n\t\t\t\t[91.9051184490001, 23.446631979000088],\n\t\t\t\t[91.91814091000003, 23.459938660000105],\n\t\t\t\t[91.94077518800009, 23.495181986000077],\n\t\t\t\t[91.94232548000008, 23.534430237000052],\n\t\t\t\t[91.91597050000007, 23.650159607000077],\n\t\t\t\t[91.91442020700003, 23.68832265300007],\n\t\t\t\t[91.91648726400007, 23.7098717250001],\n\t\t\t\t[91.9226884360001, 23.72297170000006],\n\t\t\t\t[91.93664107300009, 23.723540141000043],\n\t\t\t\t[91.94914677000008, 23.709768372000084],\n\t\t\t\t[91.96165246600009, 23.691139018000015],\n\t\t\t\t[92.00351037700005, 23.647420757000035],\n\t\t\t\t[92.01901330600003, 23.640056865000034],\n\t\t\t\t[92.04237105300007, 23.64556040500004],\n\t\t\t\t[92.05963098100005, 23.659487203000126],\n\t\t\t\t[92.09218713400003, 23.701345114],\n\t\t\t\t[92.10841353400014, 23.718243307000094],\n\t\t\t\t[92.15078820800005, 23.731653341000126],\n\t\t\t\t[92.17063195800006, 23.70364471400002],\n\t\t\t\t[92.18076053900012, 23.665378317000105],\n\t\t\t\t[92.19429976400005, 23.648144226000042],\n\t\t\t\t[92.20938928200007, 23.661605937],\n\t\t\t\t[92.22210168500004, 23.70777882900005],\n\t\t\t\t[92.23874149600005, 23.7168480430001],\n\t\t\t\t[92.25930871600013, 23.706486918000095],\n\t\t\t\t[92.25973660500011, 23.702640572000078],\n\t\t\t\t[92.26168583200007, 23.68511871300008],\n\t\t\t\t[92.25000695800003, 23.642614848000036],\n\t\t\t\t[92.25279748500009, 23.609309388],\n\t\t\t\t[92.29103804500005, 23.49528534000011],\n\t\t\t\t[92.29682580600013, 23.446580302000072],\n\t\t\t\t[92.30147668500007, 23.431800842000072],\n\t\t\t\t[92.30674768100005, 23.423868510000105],\n\t\t\t\t[92.31977014200004, 23.412163798000037],\n\t\t\t\t[92.32535119700009, 23.403507995000083],\n\t\t\t\t[92.32690149000013, 23.39601491300003],\n\t\t\t\t[92.32535119700009, 23.382165629000085],\n\t\t\t\t[92.32669478400004, 23.375266825],\n\t\t\t\t[92.33165572100012, 23.368652243],\n\t\t\t\t[92.34488488800008, 23.359117940000104],\n\t\t\t\t[92.34860559100008, 23.354105326000038],\n\t\t\t\t[92.34953576700013, 23.344958598000076],\n\t\t\t\t[92.34674523900009, 23.325295715000024],\n\t\t\t\t[92.3470552980001, 23.315425517000037],\n\t\t\t\t[92.3522229410001, 23.29883738200003],\n\t\t\t\t[92.35687382000003, 23.289122213],\n\t\t\t\t[92.35749393700013, 23.278941956000025],\n\t\t\t\t[92.35067264900005, 23.26098439500005],\n\t\t\t\t[92.3326892500001, 23.226257833000105],\n\t\t\t\t[92.32855513500004, 23.211194153000022],\n\t\t\t\t[92.3276249590001, 23.171429138000022],\n\t\t\t\t[92.3530497650001, 23.02991322800007],\n\t\t\t\t[92.3522229410001, 22.96033091300005],\n\t\t\t\t[92.35987105300006, 22.92661204000008],\n\t\t\t\t[92.37868127500008, 22.900437928000073],\n\t\t\t\t[92.4118575440001, 22.887932231],\n\t\t\t\t[92.42632694500003, 22.871059876000103],\n\t\t\t\t[92.4350085860001, 22.793286846000072],\n\t\t\t\t[92.44203658000009, 22.762926941000032],\n\t\t\t\t[92.45371545400008, 22.74796661400005],\n\t\t\t\t[92.48069055200011, 22.726159159000034],\n\t\t\t\t[92.49154260200004, 22.711069641000037],\n\t\t\t\t[92.49588342300012, 22.695618388000028],\n\t\t\t\t[92.50291141800011, 22.618620504000106],\n\t\t\t\t[92.50084436000009, 22.560536194000022],\n\t\t\t\t[92.50456506400008, 22.54379303000009],\n\t\t\t\t[92.51738081900004, 22.512580465],\n\t\t\t\t[92.51893111200008, 22.49537221300004],\n\t\t\t\t[92.57701542200004, 22.168673808000065],\n\t\t\t\t[92.57556848200005, 22.143300680000053],\n\t\t\t\t[92.56419966700008, 22.1383397420001],\n\t\t\t\t[92.54931685400004, 22.138494772000072],\n\t\t\t\t[92.5373279210001, 22.128624573000067],\n\t\t\t\t[92.55996219900004, 22.061341859],\n\t\t\t\t[92.57308801300007, 21.995402731000084],\n\t\t\t\t[92.57515507000005, 21.98656606100009],\n\t\t\t\t[92.57587854000013, 21.977574362000027]\n\t\t\t]\n\t\t]\n\t}\n}\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json","content":"[\n\t[84.144, 29.565],\n\t[84.171, 29.577],\n\t[84.22500000000001, 29.559],\n\t[84.246, 29.541],\n\t[84.297, 29.544],\n\t[84.321, 29.532],\n\t[84.411, 29.544],\n\t[84.426, 29.529],\n\t[84.45, 29.535],\n\t[84.468, 29.523],\n\t[84.492, 29.523],\n\t[84.531, 29.490000000000002],\n\t[84.507, 29.466],\n\t[84.501, 29.445],\n\t[84.513, 29.385],\n\t[84.495, 29.379],\n\t[84.483, 29.361],\n\t[84.486, 29.34],\n\t[84.519, 29.316],\n\t[84.51, 29.292],\n\t[84.522, 29.286],\n\t[84.525, 29.265],\n\t[84.57600000000001, 29.253],\n\t[84.58800000000001, 29.259],\n\t[84.60300000000001, 29.247],\n\t[84.615, 29.265],\n\t[84.63, 29.268],\n\t[84.624, 29.283],\n\t[84.651, 29.286],\n\t[84.669, 29.259],\n\t[84.732, 29.25],\n\t[84.741, 29.235],\n\t[84.771, 29.25],\n\t[84.777, 29.241],\n\t[84.843, 29.223],\n\t[84.864, 29.232],\n\t[84.879, 29.202],\n\t[84.9, 29.199],\n\t[84.909, 29.181],\n\t[84.933, 29.184],\n\t[84.96900000000001, 29.163],\n\t[85.023, 29.187],\n\t[85.071, 29.259],\n\t[85.122, 29.274],\n\t[85.167, 29.322],\n\t[85.185, 29.310000000000002],\n\t[85.26, 29.319],\n\t[85.284, 29.301000000000002],\n\t[85.34400000000001, 29.289],\n\t[85.35600000000001, 29.265],\n\t[85.413, 29.262],\n\t[85.431, 29.271],\n\t[85.449, 29.247],\n\t[85.464, 29.244],\n\t[85.521, 29.25],\n\t[85.551, 29.265],\n\t[85.611, 29.235],\n\t[85.617, 29.193],\n\t[85.662, 29.172],\n\t[85.686, 29.172],\n\t[85.69500000000001, 29.184],\n\t[85.71600000000001, 29.172],\n\t[85.72800000000001, 29.187],\n\t[85.764, 29.181],\n\t[85.761, 29.193],\n\t[85.776, 29.202],\n\t[85.788, 29.196],\n\t[85.797, 29.22],\n\t[85.809, 29.211000000000002],\n\t[85.848, 29.211000000000002],\n\t[85.863, 29.193],\n\t[85.881, 29.193],\n\t[85.917, 29.172],\n\t[85.968, 29.175],\n\t[86.004, 29.163],\n\t[86.09400000000001, 29.175],\n\t[86.10000000000001, 29.166],\n\t[86.133, 29.172],\n\t[86.148, 29.166],\n\t[86.193, 29.178],\n\t[86.223, 29.202],\n\t[86.268, 29.193],\n\t[86.295, 29.208000000000002],\n\t[86.34, 29.205000000000002],\n\t[86.412, 29.217000000000002],\n\t[86.427, 29.211000000000002],\n\t[86.43, 29.199],\n\t[86.47800000000001, 29.196],\n\t[86.496, 29.22],\n\t[86.514, 29.211000000000002],\n\t[86.52, 29.235],\n\t[86.529, 29.238],\n\t[86.535, 29.217000000000002],\n\t[86.559, 29.196],\n\t[86.607, 29.202],\n\t[86.616, 29.184],\n\t[86.658, 29.193],\n\t[86.67, 29.205000000000002],\n\t[86.682, 29.199],\n\t[86.7, 29.208000000000002],\n\t[86.736, 29.205000000000002],\n\t[86.778, 29.187],\n\t[86.805, 29.196],\n\t[86.82300000000001, 29.184],\n\t[86.84100000000001, 29.19],\n\t[86.901, 29.181],\n\t[86.949, 29.163],\n\t[87.027, 29.172],\n\t[87.039, 29.148],\n\t[87.063, 29.136],\n\t[87.084, 29.142],\n\t[87.12, 29.175],\n\t[87.162, 29.142],\n\t[87.21000000000001, 29.142],\n\t[87.237, 29.157],\n\t[87.249, 29.136],\n\t[87.297, 29.127],\n\t[87.303, 29.115000000000002],\n\t[87.366, 29.121000000000002],\n\t[87.459, 29.097],\n\t[87.486, 29.115000000000002],\n\t[87.546, 29.109],\n\t[87.56700000000001, 29.121000000000002],\n\t[87.59400000000001, 29.121000000000002],\n\t[87.60600000000001, 29.133],\n\t[87.654, 29.139],\n\t[87.666, 29.13],\n\t[87.684, 29.133],\n\t[87.687, 29.157],\n\t[87.669, 29.181],\n\t[87.675, 29.205000000000002],\n\t[87.705, 29.217000000000002],\n\t[87.714, 29.235],\n\t[87.732, 29.238],\n\t[87.732, 29.253],\n\t[87.756, 29.283],\n\t[87.753, 29.301000000000002],\n\t[87.789, 29.304000000000002],\n\t[87.795, 29.328],\n\t[87.81, 29.337],\n\t[87.849, 29.331],\n\t[87.87, 29.349],\n\t[87.906, 29.343],\n\t[87.924, 29.349],\n\t[87.97800000000001, 29.388],\n\t[87.996, 29.376],\n\t[88.014, 29.379],\n\t[88.017, 29.37],\n\t[88.125, 29.367],\n\t[88.137, 29.337],\n\t[88.161, 29.331],\n\t[88.176, 29.337],\n\t[88.188, 29.325],\n\t[88.2, 29.328],\n\t[88.221, 29.367],\n\t[88.245, 29.367],\n\t[88.287, 29.349],\n\t[88.299, 29.358],\n\t[88.365, 29.316],\n\t[88.41, 29.322],\n\t[88.422, 29.316],\n\t[88.443, 29.325],\n\t[88.458, 29.349],\n\t[88.503, 29.361],\n\t[88.536, 29.334],\n\t[88.563, 29.328],\n\t[88.596, 29.349],\n\t[88.629, 29.346],\n\t[88.641, 29.334],\n\t[88.671, 29.34],\n\t[88.71000000000001, 29.331],\n\t[88.72800000000001, 29.343],\n\t[88.791, 29.337],\n\t[88.818, 29.352],\n\t[88.86, 29.319],\n\t[88.884, 29.334],\n\t[88.908, 29.316],\n\t[88.923, 29.331],\n\t[88.962, 29.328],\n\t[88.971, 29.349],\n\t[89.007, 29.361],\n\t[89.019, 29.352],\n\t[89.034, 29.358],\n\t[89.08500000000001, 29.322],\n\t[89.136, 29.316],\n\t[89.16, 29.343],\n\t[89.181, 29.337],\n\t[89.211, 29.349],\n\t[89.235, 29.379],\n\t[89.253, 29.373],\n\t[89.265, 29.385],\n\t[89.289, 29.385],\n\t[89.307, 29.376],\n\t[89.349, 29.379],\n\t[89.397, 29.358],\n\t[89.45100000000001, 29.355],\n\t[89.46000000000001, 29.334],\n\t[89.58, 29.358],\n\t[89.595, 29.346],\n\t[89.61, 29.355],\n\t[89.631, 29.346],\n\t[89.661, 29.349],\n\t[89.679, 29.364],\n\t[89.757, 29.295],\n\t[89.787, 29.292],\n\t[89.808, 29.310000000000002],\n\t[89.85300000000001, 29.322],\n\t[89.931, 29.319],\n\t[89.985, 29.343],\n\t[90.015, 29.337],\n\t[90.072, 29.352],\n\t[90.156, 29.355],\n\t[90.168, 29.346],\n\t[90.20100000000001, 29.349],\n\t[90.22500000000001, 29.331],\n\t[90.273, 29.337],\n\t[90.276, 29.328],\n\t[90.342, 29.313],\n\t[90.378, 29.295],\n\t[90.435, 29.241],\n\t[90.477, 29.256],\n\t[90.492, 29.25],\n\t[90.51, 29.256],\n\t[90.522, 29.247],\n\t[90.54, 29.262],\n\t[90.621, 29.277],\n\t[90.642, 29.301000000000002],\n\t[90.663, 29.298000000000002],\n\t[90.681, 29.313],\n\t[90.684, 29.328],\n\t[90.705, 29.34],\n\t[90.729, 29.328],\n\t[90.747, 29.337],\n\t[90.765, 29.328],\n\t[90.768, 29.310000000000002],\n\t[90.756, 29.295],\n\t[90.771, 29.277],\n\t[90.855, 29.283],\n\t[90.897, 29.319],\n\t[90.933, 29.310000000000002],\n\t[90.95100000000001, 29.295],\n\t[90.993, 29.322],\n\t[91.035, 29.295],\n\t[91.065, 29.316],\n\t[91.116, 29.325],\n\t[91.131, 29.313],\n\t[91.173, 29.325],\n\t[91.194, 29.286],\n\t[91.233, 29.274],\n\t[91.296, 29.289],\n\t[91.308, 29.277],\n\t[91.34700000000001, 29.28],\n\t[91.374, 29.292],\n\t[91.395, 29.28],\n\t[91.449, 29.286],\n\t[91.479, 29.268],\n\t[91.512, 29.28],\n\t[91.533, 29.271],\n\t[91.554, 29.289],\n\t[91.587, 29.292],\n\t[91.602, 29.271],\n\t[91.62, 29.265],\n\t[91.659, 29.271],\n\t[91.674, 29.259],\n\t[91.71000000000001, 29.268],\n\t[91.74, 29.259],\n\t[91.782, 29.274],\n\t[91.839, 29.268],\n\t[91.869, 29.283],\n\t[91.98, 29.262],\n\t[92.007, 29.232],\n\t[92.07000000000001, 29.289],\n\t[92.115, 29.283],\n\t[92.154, 29.289],\n\t[92.196, 29.244],\n\t[92.22, 29.253],\n\t[92.235, 29.244],\n\t[92.277, 29.244],\n\t[92.295, 29.229],\n\t[92.319, 29.226],\n\t[92.376, 29.226],\n\t[92.397, 29.241],\n\t[92.406, 29.262],\n\t[92.433, 29.25],\n\t[92.46600000000001, 29.253],\n\t[92.529, 29.172],\n\t[92.529, 29.133],\n\t[92.553, 29.148],\n\t[92.598, 29.145],\n\t[92.589, 29.121000000000002],\n\t[92.61, 29.097],\n\t[92.619, 29.115000000000002],\n\t[92.658, 29.121000000000002],\n\t[92.685, 29.139],\n\t[92.697, 29.127],\n\t[92.676, 29.112000000000002],\n\t[92.679, 29.103],\n\t[92.709, 29.109],\n\t[92.739, 29.067],\n\t[92.772, 29.091],\n\t[92.775, 29.073],\n\t[92.796, 29.082],\n\t[92.808, 29.061],\n\t[92.82000000000001, 29.067],\n\t[92.82300000000001, 29.082],\n\t[92.82900000000001, 29.076],\n\t[92.85300000000001, 29.082],\n\t[92.85600000000001, 29.073],\n\t[92.88, 29.073],\n\t[92.904, 29.058],\n\t[92.934, 29.067],\n\t[92.952, 29.049],\n\t[92.973, 29.061],\n\t[92.988, 29.043],\n\t[92.997, 29.049],\n\t[93.066, 29.043],\n\t[93.081, 29.094],\n\t[93.117, 29.115000000000002],\n\t[93.123, 29.136],\n\t[93.138, 29.139],\n\t[93.15, 29.127],\n\t[93.147, 29.094],\n\t[93.165, 29.064],\n\t[93.165, 29.043],\n\t[93.153, 29.037],\n\t[93.153, 29.025000000000002],\n\t[93.162, 29.016000000000002],\n\t[93.21300000000001, 29.025000000000002],\n\t[93.22800000000001, 29.019000000000002],\n\t[93.23100000000001, 29.001],\n\t[93.261, 28.992],\n\t[93.285, 29.001],\n\t[93.312, 28.998],\n\t[93.315, 29.016000000000002],\n\t[93.348, 29.046],\n\t[93.375, 29.052],\n\t[93.393, 29.094],\n\t[93.429, 29.109],\n\t[93.447, 29.106],\n\t[93.438, 29.13],\n\t[93.48, 29.175],\n\t[93.492, 29.163],\n\t[93.54, 29.178],\n\t[93.57000000000001, 29.166],\n\t[93.627, 29.172],\n\t[93.63, 29.151],\n\t[93.645, 29.145],\n\t[93.675, 29.151],\n\t[93.681, 29.163],\n\t[93.699, 29.16],\n\t[93.702, 29.142],\n\t[93.735, 29.127],\n\t[93.75, 29.136],\n\t[93.75, 29.148],\n\t[93.78, 29.154],\n\t[93.789, 29.124000000000002],\n\t[93.825, 29.118000000000002],\n\t[93.834, 29.124000000000002],\n\t[93.831, 29.142],\n\t[93.894, 29.13],\n\t[93.912, 29.145],\n\t[93.903, 29.166],\n\t[93.909, 29.178],\n\t[93.94500000000001, 29.184],\n\t[93.95400000000001, 29.196],\n\t[94.017, 29.193],\n\t[94.035, 29.205000000000002],\n\t[94.176, 29.196],\n\t[94.251, 29.262],\n\t[94.305, 29.271],\n\t[94.302, 29.292],\n\t[94.33200000000001, 29.316],\n\t[94.35000000000001, 29.316],\n\t[94.389, 29.337],\n\t[94.401, 29.361],\n\t[94.419, 29.37],\n\t[94.434, 29.406000000000002],\n\t[94.542, 29.448],\n\t[94.581, 29.481],\n\t[94.656, 29.490000000000002],\n\t[94.70700000000001, 29.463],\n\t[94.818, 29.493000000000002],\n\t[94.875, 29.541],\n\t[94.923, 29.61],\n\t[94.926, 29.622],\n\t[94.887, 29.634],\n\t[94.917, 29.67],\n\t[94.893, 29.697],\n\t[94.905, 29.715],\n\t[94.956, 29.757],\n\t[95.124, 29.763],\n\t[95.124, 29.781000000000002],\n\t[95.09100000000001, 29.814],\n\t[95.11200000000001, 29.868000000000002],\n\t[95.13, 29.88],\n\t[95.175, 29.895],\n\t[95.196, 29.892],\n\t[95.223, 29.868000000000002],\n\t[95.286, 29.868000000000002],\n\t[95.304, 29.856],\n\t[95.307, 29.838],\n\t[95.283, 29.82],\n\t[95.289, 29.811],\n\t[95.385, 29.772000000000002],\n\t[95.379, 29.718],\n\t[95.397, 29.688000000000002],\n\t[95.388, 29.595],\n\t[95.403, 29.562],\n\t[95.427, 29.538],\n\t[95.43900000000001, 29.478],\n\t[95.43, 29.451],\n\t[95.313, 29.331],\n\t[95.256, 29.289],\n\t[95.202, 29.28],\n\t[95.04, 29.175],\n\t[95.001, 29.169],\n\t[95.004, 29.139],\n\t[94.908, 29.052],\n\t[94.902, 29.016000000000002],\n\t[94.869, 28.998],\n\t[94.839, 28.956],\n\t[94.788, 28.935000000000002],\n\t[94.773, 28.854],\n\t[94.794, 28.824],\n\t[94.914, 28.821],\n\t[94.923, 28.812],\n\t[94.911, 28.794],\n\t[94.92, 28.752],\n\t[94.977, 28.713],\n\t[94.983, 28.674],\n\t[94.998, 28.683],\n\t[95.031, 28.617],\n\t[95.09700000000001, 28.539],\n\t[95.10300000000001, 28.506],\n\t[95.09100000000001, 28.455000000000002],\n\t[95.09700000000001, 28.419],\n\t[95.013, 28.326],\n\t[94.992, 28.287],\n\t[94.992, 28.242],\n\t[95.019, 28.215],\n\t[95.031, 28.173000000000002],\n\t[95.06700000000001, 28.155],\n\t[95.145, 28.149],\n\t[95.211, 28.179000000000002],\n\t[95.277, 28.155],\n\t[95.292, 28.116],\n\t[95.316, 28.089000000000002],\n\t[95.355, 28.071],\n\t[95.379, 28.071],\n\t[95.385, 28.059],\n\t[95.382, 27.951],\n\t[95.4, 27.936],\n\t[95.412, 27.882],\n\t[95.379, 27.843],\n\t[95.349, 27.837],\n\t[95.325, 27.810000000000002],\n\t[95.325, 27.78],\n\t[95.298, 27.762],\n\t[95.289, 27.717000000000002],\n\t[95.253, 27.657],\n\t[95.211, 27.666],\n\t[95.151, 27.624000000000002],\n\t[95.139, 27.63],\n\t[95.10300000000001, 27.609],\n\t[94.992, 27.6],\n\t[94.944, 27.57],\n\t[94.917, 27.573],\n\t[94.869, 27.504],\n\t[94.803, 27.495],\n\t[94.803, 27.48],\n\t[94.785, 27.471],\n\t[94.794, 27.456],\n\t[94.767, 27.435000000000002],\n\t[94.767, 27.414],\n\t[94.73100000000001, 27.402],\n\t[94.71900000000001, 27.372],\n\t[94.69800000000001, 27.36],\n\t[94.69800000000001, 27.333000000000002],\n\t[94.683, 27.324],\n\t[94.677, 27.294],\n\t[94.635, 27.291],\n\t[94.629, 27.273],\n\t[94.602, 27.255],\n\t[94.596, 27.231],\n\t[94.584, 27.228],\n\t[94.587, 27.177],\n\t[94.596, 27.162],\n\t[94.584, 27.147000000000002],\n\t[94.566, 27.150000000000002],\n\t[94.554, 27.102],\n\t[94.518, 27.105],\n\t[94.449, 27.060000000000002],\n\t[94.44, 27.018],\n\t[94.407, 26.985],\n\t[94.35900000000001, 26.97],\n\t[94.287, 26.919],\n\t[94.197, 26.925],\n\t[94.164, 26.898],\n\t[94.146, 26.865000000000002],\n\t[94.125, 26.856],\n\t[94.113, 26.868000000000002],\n\t[94.134, 26.907],\n\t[94.113, 26.913],\n\t[94.077, 26.886],\n\t[93.927, 26.832],\n\t[93.864, 26.766000000000002],\n\t[93.753, 26.733],\n\t[93.657, 26.715],\n\t[93.618, 26.724],\n\t[93.56700000000001, 26.751],\n\t[93.441, 26.769000000000002],\n\t[93.411, 26.76],\n\t[93.369, 26.718],\n\t[93.288, 26.742],\n\t[93.249, 26.724],\n\t[93.183, 26.673000000000002],\n\t[93.12, 26.646],\n\t[93.087, 26.655],\n\t[93.018, 26.646],\n\t[92.898, 26.655],\n\t[92.883, 26.652],\n\t[92.874, 26.625],\n\t[92.83500000000001, 26.607],\n\t[92.733, 26.613],\n\t[92.676, 26.601],\n\t[92.658, 26.592000000000002],\n\t[92.616, 26.523],\n\t[92.595, 26.517],\n\t[92.508, 26.517],\n\t[92.43, 26.535],\n\t[92.391, 26.532],\n\t[92.244, 26.472],\n\t[92.229, 26.442],\n\t[92.202, 26.454],\n\t[92.172, 26.442],\n\t[92.124, 26.403000000000002],\n\t[92.06700000000001, 26.373],\n\t[92.07000000000001, 26.325],\n\t[92.058, 26.304000000000002],\n\t[91.971, 26.271],\n\t[91.932, 26.271],\n\t[91.899, 26.241],\n\t[91.878, 26.235],\n\t[91.854, 26.241],\n\t[91.665, 26.166],\n\t[91.608, 26.172],\n\t[91.542, 26.145],\n\t[91.497, 26.139],\n\t[91.377, 26.172],\n\t[91.287, 26.166],\n\t[91.197, 26.202],\n\t[91.134, 26.214000000000002],\n\t[91.062, 26.187],\n\t[90.96300000000001, 26.175],\n\t[90.888, 26.136],\n\t[90.849, 26.13],\n\t[90.807, 26.154],\n\t[90.741, 26.163],\n\t[90.681, 26.19],\n\t[90.58200000000001, 26.205000000000002],\n\t[90.507, 26.229],\n\t[90.474, 26.226],\n\t[90.435, 26.178],\n\t[90.402, 26.16],\n\t[90.345, 26.148],\n\t[90.309, 26.124],\n\t[90.22500000000001, 26.106],\n\t[90.177, 26.076],\n\t[89.955, 26.01],\n\t[89.904, 25.941],\n\t[89.84700000000001, 25.89],\n\t[89.81400000000001, 25.815],\n\t[89.736, 25.692],\n\t[89.724, 25.632],\n\t[89.697, 25.572],\n\t[89.709, 25.482],\n\t[89.697, 25.398],\n\t[89.67, 25.323],\n\t[89.7, 25.266000000000002],\n\t[89.703, 25.242],\n\t[89.685, 25.2],\n\t[89.661, 25.173000000000002],\n\t[89.625, 25.074],\n\t[89.613, 24.96],\n\t[89.613, 24.936],\n\t[89.658, 24.87],\n\t[89.673, 24.792],\n\t[89.706, 24.75],\n\t[89.769, 24.549],\n\t[89.748, 24.372],\n\t[89.754, 24.282],\n\t[89.733, 24.225],\n\t[89.742, 24.201],\n\t[89.739, 24.123],\n\t[89.697, 24.015],\n\t[89.7, 23.958000000000002],\n\t[89.727, 23.883],\n\t[89.787, 23.796],\n\t[89.85600000000001, 23.748],\n\t[89.919, 23.664],\n\t[89.985, 23.643],\n\t[90.144, 23.544],\n\t[90.249, 23.463]\n]\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts","content":"// Example tokens only. Replace every visual value with production-local tokens.\nexport const COLORS = {\n\tbg: '#101315',\n\t// Electric water — a near-white icy core with a blue glow and a white-hot draw-head (the \"electricity\"\n\t// travels along the river as it draws on). No dark casing.\n\triver: '#E8F7FF', // bright icy core\n\triverGlow: 'rgba(73,198,255,0.5)', // electric-blue glow\n\triverHead: '#FFFFFF', // white-hot leading head\n\triverHeadGlow: 'rgba(120,225,255,0.95)',\n\tborder: '#f5f2ed', // neutral cream country borders/labels over the colored fills\n\tcream: '#f5f0eb',\n} as const;\n\n// Example progressive fill tokens. Rename these keys and replace values for each production.\nexport const COUNTRY = {\n\tchina: '#D4A853',\n\tindia: '#5B8A8A',\n\tbangladesh: '#C07B57',\n} as const;\n// Darker shade of each country colour — the settled border line (the bright COUNTRY colour is the\n// glowing draw-head that leads the animation).\nexport const COUNTRY_DARK = {\n\tchina: '#9A7530',\n\tindia: '#3C5C5C',\n\tbangladesh: '#855239',\n} as const;\nexport const FILL_OPACITY = 0.5;\n\nexport const VIDEO = {width: 1920, height: 1080, fps: 30} as const;\n\n// Beat durations (seconds → frames at VIDEO.fps)\nexport const DUR = {\n\tmapExplainer: 12 * VIDEO.fps,\n} as const;\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md","content":"# Map element data sources\n\nChoose the source independently for every story element. A single map can—and often should—mix\nprovider vectors with custom geodata.\n\n## Decision rule\n\nUse a MapTiler Planet vector layer when the feature already exists there, its attributes support an\neditorially precise filter, and provider geometry is acceptable for the claim. Use custom GeoJSON when\nthe feature is absent, proposed, historical, disputed, corrected, privately sourced, or needs ordered\ngeometry for a deterministic draw.\n\n| Requirement                                                                 | MapTiler vector layer | Custom GeoJSON                              |\n| --------------------------------------------------------------------------- | --------------------- | ------------------------------------------- |\n| Roads, waterways, water, boundaries, land cover, or other standard context  | Prefer                | Use only when provider data is insufficient |\n| Basemap-consistent geometry without a duplicate local dataset               | Prefer                | No                                          |\n| Proposed, historical, classified, corrected, or production-specific element | No                    | Prefer                                      |\n| Fade, colour, width, radius, blur, or fill-opacity animation                | Yes                   | Yes                                         |\n| Feature-state highlight when a stable feature ID exists                     | Yes                   | Yes                                         |\n| Deterministic source-to-end line draw or perimeter draw                     | Bake first            | Prefer                                      |\n| Geometry editing, morphing, clipping, or exact sequencing                   | No                    | Prefer                                      |\n\nProvider alignment is not proof of correctness. Inspect the attributes and geometry against the\neditorial source before presenting a provider feature as evidence.\n\n## MapTiler vector mode\n\nMapTiler Planet is a vector tile source. Add it once, then build story layers with a\n`source-layer` and an exact attribute filter. Read the current MapTiler Planet schema before choosing\nlayer names or fields.\n\nCommon layer categories include `waterway`, `water`, `transportation`, `boundary`, `landcover`, and\n`poi`; availability, fields, and zoom ranges vary by schema version.\n\n```ts\nimport {addMapTilerVectorElement, setVectorElementPaint} from \"./MapTilerVectorElement\";\n\naddMapTilerVectorElement(map, process.env.REMOTION_MAPTILER_KEY!, {\n  id: \"story-river\",\n  sourceLayer: \"waterway\",\n  type: \"line\",\n  filter: [\n    \"all\",\n    [\"==\", [\"get\", \"class\"], \"river\"],\n    [\"==\", [\"coalesce\", [\"get\", \"name_en\"], [\"get\", \"name\"]], \"Yarlung Tsangpo\"],\n  ],\n  layout: {\"line-cap\": \"round\", \"line-join\": \"round\"},\n  paint: {\n    \"line-color\": \"#E8F7FF\",\n    \"line-width\": 3,\n    \"line-opacity\": 0,\n  },\n});\n\nsetVectorElementPaint(map, \"story-river\", {\n  \"line-opacity\": reveal,\n  \"line-width\": 2 + reveal * 2,\n});\n```\n\nAnimate provider features by changing paint properties from the Remotion frame: opacity, colour,\nwidth, blur, fill opacity, circle radius, or symbol opacity. Use feature state only when the source\nprovides stable IDs and the selection remains deterministic across tiles.\n\nDo not treat a tiled line as one ordered path. Vector tiles split features at tile boundaries, so a\nsource-to-mouth or start-to-end draw has no reliable global order. If that motion carries meaning,\nextract and verify the complete feature, order it once, save it as GeoJSON, and use the custom mode.\n\n## Custom geodata mode\n\nUse the bundled `../assets/RiverReveal.tsx` and `../scripts/prep-geo.mjs` pattern for custom GeoJSON. This mode owns\nthe exact geometry and can slice it by distance, calculate entry triggers, draw complete borders, and\nproduce deterministic sequences.\n\nCustom mode is mandatory when:\n\n- the feature is not in the provider dataset;\n- the story uses a proposed route, planned tunnel, historical boundary, disputed interpretation, or\n  non-public dataset;\n- provider geometry was editorially corrected;\n- motion must travel through the geometry in a verified order;\n- a complete off-screen boundary matters and a viewport query would silently crop it.\n\n## Hybrid mode\n\nUse provider vectors for ordinary contextual features and custom GeoJSON for the specific claim. For\nexample: MapTiler waterways and roads as aligned context; a custom proposed tunnel, dam site, disputed\nboundary, or verified evacuation area as the highlighted evidence.\n\nKeep provider and custom layers visually distinct when they carry different evidentiary weight. Record\nthe source and effective date of every custom layer in the production notes.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md","content":"# Map Explainer — architecture reference\n\nDeep detail behind `TECHNIQUE.md`: the timing model, the river reveal + electric head, the per-country\nsequence, and label projection. The supplied values are examples, not a production style system.\nThe custom-geometry example is `../assets/RiverReveal.tsx` +\n`../assets/CountryLabel.tsx` +\n`../assets/tokens.ts`. Provider-vector setup is in\n`../assets/MapTilerVectorElement.ts`; choose between\nthe two modes with `data-sources.md`.\n\n## 1. The render harness (per frame)\n\nInit the MapTiler map once (ref guard). On `load`: strip clutter (see `geo-prep.md`), add sources/layers,\nwait for `once('idle') → continueRender`. Per frame:\n\n```\ndelayRender → setData/setPaintProperty → map.once('idle', continueRender) → triggerRepaint\n```\n\n`preserveDrawingBuffer:true` so Remotion's screenshot captures the canvas. Render `--gl=angle`.\nFor an animated camera, read `render-stability.md`: the MapTiler renderer remains static and a CSS plate\ntransform supplies the camera choreography.\n\n## 2. Timing model — time-based; beat length derived from the sequences\n\nEverything keys off **seconds** (`t = frame / fps`), not reveal-units. The river draws over a window;\neach country **triggers when the river reaches it** and runs a fixed sequence. The beat is exactly as\nlong as the sequences need.\n\n```ts\nconst RIVER_START = 0.3, RIVER_END = 8.0;            // river draws over this window\nconst BORDER_S = 2.5, FILL_S = 1.0, LABEL_S = 0.7;   // per-country sequence (constant durations)\nconst trigger = (c) => RIVER_START + META[c].stop * (RIVER_END - RIVER_START);  // river-arrival time\n// beat length = max over c of (trigger(c) + BORDER_S + FILL_S + LABEL_S) + tail\nconst reveal = interpolate(t, [RIVER_START, RIVER_END], [0,1], { ...clamp, easing: Easing.bezier(0.645, 0.045, 0.355, 1) });\n```\n\n**Constant durations matter:** drive the border draw by _time since trigger_, not a slice of the reveal —\notherwise complex or long borders flash by in a fraction of a second.\n\n## 3. Provider-vector animation\n\nMapTiler Planet elements can be animated directly in place. Filter an exact `source-layer` feature,\ninitialize its paint in the hidden or neutral state, then update paint properties from the Remotion frame.\nThis works for line, fill, circle, and symbol layers without copying provider geometry into the project.\n\nDo not assume tiled geometry has a global order. Provider features are split at tile boundaries: opacity,\ncolour, width, blur, radius, fill, and feature-state changes are reliable; semantic start-to-end line\ndraws are not. Bake ordered GeoJSON when the direction of the draw carries meaning.\n\n## 4. Custom line animation — reveal + electric draw-head\n\nThe \"electricity\" is a **white-hot head** leading the draw — the last few % of the drawn line in its own\nbright + glow layers, faded out once the river completes.\n\n```ts\nconst riverDrawnKm = lineKm * reveal;\nmap.getSource(\"river\").setData(turf.lineSliceAlong(line, 0, Math.max(0.001, riverDrawnKm)));\nconst headKm = lineKm * 0.03;\nmap.getSource(\"river-head\").setData(turf.lineSliceAlong(line, Math.max(0, riverDrawnKm - headKm), Math.max(0.001, riverDrawnKm)));\nlet headFade = 0;\nif (reveal > 0.002 && reveal < 0.999) headFade = 1;\nelse if (reveal >= 0.999) headFade = 1 - clamp01((t - RIVER_END) / 0.5);  // fade out at the mouth\nmap.setPaintProperty(\"river-headglow\", \"line-opacity\", 0.85 * headFade);\nmap.setPaintProperty(\"river-head\", \"line-opacity\", headFade);\n```\n\nLayers, bottom→top: `river-glow` (electric blue `#49C6FF`, w11, op0.32, blur6) → `river-line`\n(icy core `#E8F7FF`, w3) → `river-headglow` (`rgba(120,225,255,.95)`, w16, blur9) → `river-head`\n(white `#FFFFFF`, w4.5). **No dark casing** — the bright icy core reads over every fill on its own.\n\n## 5. Country animation — border draws → fill blooms → label rises\n\nTriggered by river arrival, each country runs three sequential phases. The border is a **darker shade**\nof the country colour (the electricity is on the river, not here).\n\n```ts\nconst lt = t - trigger(c);                                   // local seconds since trigger\n// 1) complete source border draws on over a constant BORDER_S, multi-segment-safe\nconst bp = interpolate(clamp01(lt / BORDER_S), [0,1], [0,1], { easing: Easing.bezier(0.645, 0.045, 0.355, 1) });\nmap.getSource(`trail-${c}`).setData(sliceBorder(DRAW[c], 0, DRAW[c].total * bp));   // COUNTRY_DARK line\n// 2) fill blooms in (opacity overshoots, then settles) after the border completes\nconst fp = clamp01((lt - BORDER_S) / FILL_S);\nconst fo = interpolate(fp, [0, 0.6, 1], [0, FILL_OPACITY * 1.25, FILL_OPACITY], { ...clamp, easing: Easing.bezier(0.3333333333333333, 1, 0.6666666666666666, 1) });\nmap.setPaintProperty(`fill-${c}`, \"fill-opacity\", fp <= 0 ? 0 : fo);\n// 3) label rises in after the fill\nconst lp = clamp01((lt - BORDER_S - FILL_S) / LABEL_S);\n```\n\n`sliceBorder(d, fromKm, toKm)` reveals a portion of a complete (possibly multi-segment) border as a\nMultiLineString, slicing each segment by cumulative length — no joins across gaps and no viewport crop:\n\n```ts\nconst sliceBorder = (d, fromKm, toKm) => {\n  const out = [];\n  for (let i = 0; i < d.segLines.length; i++) {\n    const start = d.cum[i], end = start + d.segLen[i];\n    const a = Math.max(fromKm, start), b = Math.min(toKm, end);\n    if (b - a <= 0.0008) continue;\n    out.push(turf.lineSliceAlong(d.segLines[i], a - start, b - start).geometry.coordinates);\n  }\n  return { type:\"Feature\", properties:{}, geometry:{ type:\"MultiLineString\", coordinates: out } };\n};\n```\n\nChoose fill, border, and river colours in the production's local token file. The bundled token values are\nexamples only; do not carry a source project's palette into another production.\n\n## 6. Labels — HTML overlay, projected each frame\n\nLabels are React, not map symbols (full typography control). `CountryLabel` is an example accent-rule,\nrise-and-fade treatment; select the typeface and final values in the production.\nPositioned by projecting the anchor to screen pixels **every frame**, stored in state:\n\n```ts\nconst p = map.project(META[c].anchor);   // lngLat → screen px (respects the live camera)\npos[c] = { x: p.x, y: p.y, reveal: lp };\nsetLabels(pos);                          // re-render the overlay; effect deps exclude `labels`\n```\n\n`CountryLabel` shows the mechanics: uppercase region name, short accent divider, rise/fade entrance,\nand `pointerEvents:none`. Select font, weight, size, spacing, contrast, and colour from the production's\nown type and palette system.\n\n## 7. Camera — fixed map plate for any movement\n\nRead `render-stability.md`. Do not use per-frame `map.jumpTo()` for a moving 2D shot; it can shimmer in\nheadless renders even on satellite imagery. Interpolate the intended camera for the CSS plate transform,\nwhile keeping the MapTiler renderer static.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md","content":"# Map Explainer — basemap & geo prep\n\nHow the basemap is cleaned and how `../scripts/prep-geo.mjs` bakes the per-country data the component reads.\n\n## Basemap styling — strip the clutter\n\nOn `load`, remove the basemap's labels and inner admin borders so only your geography reads:\n\n```ts\nfor (const l of m.getStyle().layers as any[])\n  if (l.type === \"symbol\" || /other border/i.test(l.id)) m.removeLayer(l.id);\n```\n\n- `type === \"symbol\"` → every place/water/road **label** (the \"MapTiler labels\"). Gone.\n- Inner admin-border layer IDs vary by style. Inspect the loaded style, remove state/province/district\n  layers as needed, and retain only the context borders the production requires.\n- Logo/attribution: `maptilerLogo:false` + `attributionControl:false` aren't always enough — also hide\n  via CSS in the component:\n  ```tsx\n  <style>\n    {`\n      .maplibregl-ctrl-bottom-left,\n      .maplibregl-ctrl-bottom-right,\n      .maplibregl-ctrl-attrib,\n      .maptiler-logo {\n        display: none !important;\n      }\n    `}\n  </style>\n  ```\n\n## `../scripts/prep-geo.mjs` → outputs\n\nReads a routed river GeoJSON + country polygon GeoJSONs; writes:\n\n- **River line** — simplified for a smooth draw. For a braided river, route one source→mouth path through\n  the network first: greedy endpoint-chaining bounces between parallel channels. → `src/geo/river-flow.json`.\n- **`public/geo/borders.geojson`** — each country's polygon tagged `{country: name}` (one source,\n  filtered per country for the fills).\n- **`src/geo/country-meta.json`** — per country `{ stop, anchor, border }`.\n\n### `stop` — when a country lights up\n\nWalk the river points; first point inside a country (`turf.booleanPointInPolygon`) = the arc-length\nfraction where the river **enters** it. Drives the trigger time. The headwaters country = 0.\n\n### `anchor` — label centre via pole of inaccessibility\n\nThe most-interior point of the country (clipped to a per-country **story bbox** so a big country\ncentres in the relevant region, not its far bulge), then a small operator **nudge**. Pole = grid-sample\ninside the polygon, keep the point with max distance to the boundary. **Centroids get pulled to edges —\ndon't use them.**\n\n```js\nconst pole = (poly) => {\n  const bb = turf.bbox(poly), edge = turf.polygonToLine(poly), N = 46;\n  let best = null, bestD = -1;\n  for (let i = 0; i <= N; i++) for (let j = 0; j <= N; j++) {\n    const p = turf.point([bb[0]+(bb[2]-bb[0])*i/N, bb[1]+(bb[3]-bb[1])*j/N]);\n    if (!turf.booleanPointInPolygon(p, poly)) continue;\n    const d = turf.pointToLineDistance(p, edge);\n    if (d > bestD) { bestD = d; best = p.geometry.coordinates; }\n  }\n  return best;\n};\nconst ANCHOR_BBOX = { china:[82,27,96,32], india:[76,14,99,31], bangladesh:[86,20,93,27] };  // story regions\nconst NUDGE = { china:[0,0.6], india:[-1.0,0], bangladesh:[0,-0.6] };                          // operator-directed\n```\n\n### `border` — complete source geometry\n\nPreserve every exterior ring from the named country source. Never clip a country or bilateral border to\nthe framed bbox and never discard an off-screen segment: the geometry may leave the frame naturally.\nThe renderer handles a MultiLineString by cumulative length, so it remains one timed reveal without\ninventing joins across gaps.\n\n## Tuning the geo prep for a new scenario\n\n| Want                              | Knob                                                                 |\n| --------------------------------- | -------------------------------------------------------------------- |\n| Which countries                   | the country list in `prep-geo.mjs` (+ supply their polygon GeoJSONs) |\n| Label centred in the right region | `ANCHOR_BBOX[country]` (the story bbox)                              |\n| Nudge a label                     | `NUDGE[country]` (lng, lat offset)                                   |\n| What border is drawn              | the complete named source geometry; never the visible extent         |\n| When each lights up               | derived from `stop` — depends on the river geometry                  |\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md","content":"# Moving Map Render Stability\n\nRead this reference before building a moving 2D MapTiler scene or diagnosing a wavering Remotion render.\n\n## Symptom and cause\n\nIf basemap detail shimmers or jitters during a pan/zoom, the likely cause is per-frame `map.jumpTo()`.\nHeadless MapTiler capture can resample both vector hillshade and satellite imagery differently frame to\nframe. Tile retries, easing changes, and label changes do not solve that renderer effect.\n\n## Required pattern: fixed map plate\n\nFor any 2D pan/zoom:\n\n1. Render the MapTiler canvas once at the largest required zoom in an oversized container. Size it from the camera route and keep each dimension below the browser's reliable WebGL render-buffer limit (commonly 4096 px). Do **not** blindly use 3×: a 1920×1080 composition becomes 5760 px wide and Chromium may silently downsample it, causing visible pixelation during the CSS zoom.\n2. Keep the map's camera static.\n3. For each frame, calculate the approved target centre/zoom, then move the canvas with CSS `translate` + `scale`.\n4. Apply the same transform to every projected HTML overlay.\n5. Continue to animate GeoJSON data and paint properties imperatively; only the renderer camera is frozen.\n\nKeep pitch and bearing constant. Use a 3D engine such as Cesium for genuine changing pitch/bearing or a terrain flythrough.\n\n```ts\nconst baseZoom = Math.max(start.zoom, end.zoom);\nconst map = new maptilersdk.Map({\n  container,\n  style,\n  center: end.center,\n  zoom: baseZoom,\n  pitch: end.pitch ?? 0,\n  bearing: end.bearing ?? 0,\n  interactive: false,\n  fadeDuration: 0,\n  canvasContextAttributes: {preserveDrawingBuffer: true},\n});\n\n// Per Remotion frame. `camera` is the approved centre/zoom interpolation.\nconst projected = map.project(camera.center);\nconst scale = 2 ** (camera.zoom - baseZoom);\nconst plate = {\n  transform: `translate(${width / 2 - projected.x * scale}px, ${height / 2 - projected.y * scale}px) scale(${scale})`,\n  transformOrigin: \"0 0\",\n};\n\n// Convert label projection with exactly the same plate transform.\nconst labelX = labelPoint.x * scale + width / 2 - projected.x * scale;\nconst labelY = labelPoint.y * scale + height / 2 - projected.y * scale;\n```\n\n### Plate sizing and sharpness\n\n- Render at the maximum zoom reached by **any** camera waypoint, including intermediate or hold cameras. The CSS scale should never exceed `1`; otherwise the plate is being enlarged.\n- Centre the frozen map on the midpoint of the camera route's geographic extent, not automatically on the final camera. This minimizes required overscan.\n- Keep the largest canvas dimension at or below 4096 px unless the actual render environment has been tested with a larger `MAX_RENDERBUFFER_SIZE`.\n- For 1920×1080, a 3840×2160 plate is a safe default. For 1080×1920, use approximately 2700×3840 when the route needs extra horizontal pan room.\n- If the route cannot fit within that plate at the required zoom, split the shot into two fixed plates with a deliberate editorial transition. Do not trade sharpness for one enormous canvas.\n- Distinguish failure modes: repeating shimmer means the live renderer is moving; steadily soft tiles during a CSS push means the fixed plate is underspecified, internally downsampled, or being scaled above `1`.\n\n## Verification\n\n- Render a short MP4, not only a Studio preview.\n- Inspect static terrain texture and satellite detail while the camera moves.\n- If any underlying map detail wavers, use the fixed map plate. Do not approve it as a minor preview artefact.\n- Render WebGL with `--gl=angle`, `preserveDrawingBuffer:true`, and conservative concurrency (`1`) while validating.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","content":"// Geo prep for the map-explainer. Bakes the data the component reads:\n//   out/river-flow.json    -> the river draw-on line   (→ copy to your Remotion project's src/geo/)\n//   out/country-meta.json  -> per-country { stop, anchor, border }   (→ src/geo/)\n//   out/borders.geojson    -> country polygons, each tagged {country}  (→ public/geo/  — loaded via staticFile)\n//\n// RUN:  node prep-geo.mjs        (needs YOUR geodata — see CONFIG; the source polygons are too large to ship,\n//                                 so the skill ships the OUTPUTS in assets/sample-data/ instead.)\n//\n// RIVER INPUT MUST BE ONE CLEAN LINESTRING, source → mouth (features[0].geometry is a LineString). If your\n// OSM river comes as many ways / braided channels, ROUTE it into a single line FIRST — a graph\n// shortest-path from source node to mouth node. Do NOT greedily chain by nearest endpoint: it bounces\n// between parallel channels. (That routing step is a prerequisite, not part of this script.)\n\nimport {readFileSync, writeFileSync, mkdirSync} from 'fs';\nimport {dirname, resolve} from 'path';\nimport {fileURLToPath} from 'url';\n\nif (process.argv.includes('--help')) {\n\tconsole.log(\n\t\t'Configure COUNTRIES, RIVER, BORDER, label bounds, and output paths in this script, then run: bun scripts/prep-geo.mjs',\n\t);\n\tprocess.exit(0);\n}\n\nconst turf = await import('@turf/turf');\n\nconst __dir = dirname(fileURLToPath(import.meta.url));\nconst root = resolve(__dir, '..');\nconst geo = resolve(root, '../geodata'); // ADAPT: where your input GeoJSON lives\nconst read = (p) => JSON.parse(readFileSync(p, 'utf8'));\n\n// ===== CONFIG — edit for your river + countries =====\nconst COUNTRIES = ['china', 'india', 'bangladesh']; // ORDERED headwaters → mouth; first = source (stop 0)\nconst RIVER = resolve(geo, 'focus-rivers/yarlung-brahmaputra-full-osm.geojson'); // a single clean source→mouth LineString\nconst BORDER = (name) => resolve(geo, `project-borders/${name}.geojson`); // one polygon file per country, named <country>.geojson\nconst FRAME_BBOX = [76, 14, 104, 33.5]; // [W,S,E,N] visible extent — fallback for label anchoring only\nconst ANCHOR_BBOX = {\n\tchina: [82, 27, 96, 32],\n\tindia: [76, 14, 99, 31],\n\tbangladesh: [86, 20, 93, 27],\n}; // [W,S,E,N] per-country label \"story region\"\nconst NUDGE = {china: [0, 0.6], india: [-1.0, 0], bangladesh: [0, -0.6]}; // [lng,lat] label nudge\nconst RIVER_SIMPLIFY_TOL = 0.006; // degrees — smooths the draw-on (bigger = simpler)\nconst OUT_RIVER = resolve(root, 'out/river-flow.json');\nconst OUT_META = resolve(root, 'out/country-meta.json');\nconst OUT_BORDERS = resolve(root, 'out/borders.geojson');\n// =====================================================\n\nconst havKm = (a, b) => {\n\tconst R = 6371,\n\t\tr = Math.PI / 180;\n\tconst dLat = (b[1] - a[1]) * r,\n\t\tdLng = (b[0] - a[0]) * r;\n\tconst h =\n\t\tMath.sin(dLat / 2) ** 2 +\n\t\tMath.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;\n\treturn 2 * R * Math.asin(Math.sqrt(h));\n};\n\n// --- River draw-on line: take the clean routed LineString, strip a dangling final hop, simplify so the\n// wide-zoom draw-on reads as one smooth thread (no bezier — meander overshoot on a long river). ---\nconst routed = read(RIVER).features[0].geometry.coordinates;\nlet end = routed.length;\nwhile (end > 2 && havKm(routed[end - 2], routed[end - 1]) > 15) end--; // drop a final cross-braid jump if present\nconst flow = turf.simplify(turf.lineString(routed.slice(0, end)), {\n\ttolerance: RIVER_SIMPLIFY_TOL,\n\thighQuality: true,\n}).geometry.coordinates;\n\n// --- Borders + country fills (one source, filtered per country in the component) ---\nconst borders = {type: 'FeatureCollection', features: []};\nconst polys = {};\nfor (const name of COUNTRIES) {\n\tconst fc = read(BORDER(name));\n\tpolys[name] = fc;\n\tfor (const f of fc.features) {\n\t\tf.properties = {...(f.properties || {}), country: name};\n\t\tborders.features.push(f);\n\t}\n}\n\n// --- Reveal stops: arc-length fraction of `flow` where the river first ENTERS each country. The first\n// country (headwaters) is the source, so its stop is 0; the rest are computed. ---\nconst flowKm = turf.length(turf.lineString(flow));\nconst insideCountry = (pt, name) =>\n\tpolys[name].features.some((f) => turf.booleanPointInPolygon(pt, f));\nconst stops = {};\nCOUNTRIES.forEach((c, i) => {\n\tstops[c] = i === 0 ? 0 : 1;\n}); // 0 = headwaters; 1 = sentinel until entered\nlet acc = 0;\nfor (let i = 0; i < flow.length; i++) {\n\tif (i > 0) acc += havKm(flow[i - 1], flow[i]);\n\tconst frac = acc / (flowKm || 1);\n\tconst pt = turf.point(flow[i]);\n\tfor (const c of COUNTRIES)\n\t\tif (stops[c] === 1 && insideCountry(pt, c)) stops[c] = frac;\n}\n\n// --- Per-country meta: anchor = pole of inaccessibility of the visible landmass (centred, away from\n// borders/edges) within the country's story region + a NUDGE; border = every exterior ring from the\n// complete named source. Never crop a country or bilateral boundary to the viewport. ---\nconst biggestPoly = (geom) => {\n\tconst rings =\n\t\tgeom.type === 'MultiPolygon' ? geom.coordinates : [geom.coordinates];\n\tlet best = null,\n\t\tbestA = -1;\n\tfor (const c of rings) {\n\t\tconst p = turf.polygon(c);\n\t\tconst a = turf.area(p);\n\t\tif (a > bestA) {\n\t\t\tbestA = a;\n\t\t\tbest = p;\n\t\t}\n\t}\n\treturn best;\n};\nconst largestPolygon = (fc) => {\n\tlet best = null,\n\t\tbestA = -1;\n\tfor (const f of fc.features) {\n\t\tconst p = biggestPoly(f.geometry),\n\t\t\ta = turf.area(p);\n\t\tif (a > bestA) {\n\t\t\tbestA = a;\n\t\t\tbest = p;\n\t\t}\n\t}\n\treturn best;\n};\nconst completeExteriorSegments = (fc) => {\n\tconst segments = [];\n\tfor (const feature of fc.features) {\n\t\tconst polygons =\n\t\t\tfeature.geometry.type === 'MultiPolygon'\n\t\t\t\t? feature.geometry.coordinates\n\t\t\t\t: [feature.geometry.coordinates];\n\t\tfor (const polygon of polygons)\n\t\t\tif (polygon[0]?.length > 1) segments.push(polygon[0]);\n\t}\n\treturn segments;\n};\nconst poleOfInaccessibility = (poly) => {\n\tconst bb = turf.bbox(poly),\n\t\tboundary = turf.polygonToLine(poly),\n\t\tN = 46;\n\tlet best = null,\n\t\tbestD = -1;\n\tfor (let i = 0; i <= N; i++)\n\t\tfor (let j = 0; j <= N; j++) {\n\t\t\tconst lng = bb[0] + ((bb[2] - bb[0]) * i) / N,\n\t\t\t\tlat = bb[1] + ((bb[3] - bb[1]) * j) / N;\n\t\t\tconst pt = turf.point([lng, lat]);\n\t\t\tif (!turf.booleanPointInPolygon(pt, poly)) continue;\n\t\t\tconst d = turf.pointToLineDistance(pt, boundary);\n\t\t\tif (d > bestD) {\n\t\t\t\tbestD = d;\n\t\t\t\tbest = [lng, lat];\n\t\t\t}\n\t\t}\n\treturn best;\n};\nconst countryMeta = {};\nfor (const name of COUNTRIES) {\n\tconst poly = largestPolygon(polys[name]);\n\tconst storyRegion = biggestPoly(\n\t\tturf.bboxClip(poly, ANCHOR_BBOX[name] || FRAME_BBOX).geometry,\n\t);\n\tconst pole = poleOfInaccessibility(storyRegion);\n\tconst segs = completeExteriorSegments(polys[name]);\n\tconst nudge = NUDGE[name] || [0, 0];\n\tcountryMeta[name] = {\n\t\tstop: stops[name],\n\t\tanchor: [pole[0] + nudge[0], pole[1] + nudge[1]],\n\t\tborder: segs,\n\t};\n}\n\nmkdirSync(dirname(OUT_RIVER), {recursive: true});\nwriteFileSync(OUT_RIVER, JSON.stringify(flow));\nwriteFileSync(OUT_META, JSON.stringify(countryMeta));\nwriteFileSync(OUT_BORDERS, JSON.stringify(borders));\nconsole.log(\n\t'river:',\n\tflow.length,\n\t'pts ·',\n\tflowKm.toFixed(0),\n\t'km · entry stops',\n\tJSON.stringify(stops),\n);\nfor (const n of COUNTRIES) {\n\tconst km = countryMeta[n].border.reduce(\n\t\t(s, seg) => s + turf.length(turf.lineString(seg)),\n\t\t0,\n\t);\n\tconsole.log(\n\t\t`  ${n}: anchor ${countryMeta[n].anchor.map((v) => v.toFixed(2)).join(',')} · border ${km.toFixed(0)} km`,\n\t);\n}\nconsole.log(\n\t\"\\nNext: copy out/river-flow.json + out/country-meta.json → your project's src/geo/ ; out/borders.geojson → public/geo/\",\n);\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs"},{"path":"remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md","content":"# MapTiler maps in Remotion\n\nMapTiler is a good solution for map animations where geographics features should be drawn as annotations on top of the map: Country borders, rivers, labels for POIs.\n\n## MapTiler SDK (`@maptiler/sdk`)\n\nDraw the basemap plus MapTiler Planet vector layers and custom GeoJSON into a WebGL canvas. Default styled-vector starting point: `MapStyle.BASIC`; satellite is an equally valid choice.\n\n## Remotion\n\nImperatively update `setData`/`setPaintProperty`.\n\nUse `jumpTo` only for a static shot, or a fixed map plate for any pan/zoom.\nGate with [`delayRender`](https://www.remotion.dev/docs/delay-render.md) until `map.once('idle')`.\n\nUse `preserveDrawingBuffer:true`.\n\nRender labels as positioned [`<Interactive.Div>`](https://www.remotion.dev/docs/interactive.md) elements.\n\nEnv `REMOTION_MAPTILER_KEY` (unrestricted). Init the map once (ref guard); update imperatively per frame.\n\nWhen constructing MapLibre/MapTiler layer objects, omit optional properties that are absent.  \nIn particular, use `...(layer.filter ? {filter: layer.filter} : {})`; do not pass `filter: undefined`. An undefined filter can suppress the layer while separately created halo or border layers continue rendering, producing missing country fills and dark marker halos with no coloured cores.\n\nDrive animation from `useCurrentFrame()` rather than CSS transitions or browser timers.  \n\n## Choose the source for each map element\n\nDo not begin by manufacturing GeoJSON. First check whether MapTiler Planet already exposes the element as filtered vector data.\n\n### MapTiler vector\n\nUse it when the feature exists in a provider `source-layer`, its attributes support an exact filter, and provider geometry is editorially acceptable.\n\n### Hybrid\n\nUse it when ordinary geographic context can come from MapTiler while the claim depends on custom\nevidence.\n\nAnimate each layer according to its source and meaning.\n\nMapTiler vector features remain split across tiles. Do not use them for a semantic start-to-end line draw; extract, verify, order, and bake that element to GeoJSON first. Read **`references/map-data-sources.md`** and reuse **`assets/MapTilerVectorElement.ts`** for provider-layer setup and per-frame paint updates.\n\n## Motion stability\n\n**Do not call `map.jumpTo()` on every Remotion frame when the camera moves.** In headless capture it can make both MapTiler hillshade **and satellite imagery** shimmer/jitter, even when the source tiles load correctly. This is renderer resampling, not a data, network, or label problem.\n\nFor the implementation, read **`references/render-stability.md`** before building or debugging any moving map. It contains the fixed-map-plate recipe, diagnostics, and render checks.\n\n- Use the live MapTiler camera only for a static shot.\n- Keep pitch and bearing constant for a fixed plate. This technique does not implement a genuine changing 3D camera.\n- Verify the moving preview and a short rendered MP4 before approving a beat. If any basemap detail wavers, switch to the fixed-plate pattern; do not try to solve it with tile retries or camera easing.\n\n## Drawing rivers\n\nUse `turf.lineSliceAlong(line, 0, lineKm*reveal)` to draw rivers.\n\n## Source selection\n\nUse MapTiler vector layers for suitable provider features and custom GeoJSON for story-specific or ordered geometry. If the beat needs country-entry triggers or a progressive line draw, run `scripts/prep-geo.mjs` to bake `country-meta.json`, `borders.geojson`, and the ordered line. Details → `references/map-data-sources.md` and `references/map-geo-prep.md`.\n\n## Keep it minmal\n\nStrip clutter on `load`: remove `symbol` layers (place labels) and `/other border/i` (admin-1 inner borders); hide the logo via CSS. Keep country + disputed borders.\n\n## Files\n\nUse as reference:\n\n- `assets/RiverReveal.tsx` — the main component.\n- `assets/MapTilerVectorElement.ts` — filtered MapTiler Planet elements.\n- `assets/CountryLabel.tsx` — reusable example label.\n- `assets/tokens.ts` — example palette and durations.\n- `assets/example-Root.tsx` — minimal composition scaffold.\n- `assets/sample-data/` — example route and generated country metadata.\n- `scripts/prep-geo.mjs` — geo pipeline.\n- `references/map-explainer-architecture.md` — timing model and implementation.\n- `references/map-data-sources.md` — provider vector versus custom GeoJSON selection.\n- `references/map-geo-prep.md` — basemap stripping and geo preparation.\n- `references/render-stability.md` — camera motion and stable headless renders.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md"},{"path":"remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md","content":"---\nname: remotion-maps-static\ndescription: Create a deterministic static locator map in Remotion when neither the camera nor geographic data animates.\n---\n\n# Static map\n\nUse a static image when the map only provides location context. This is the smallest, fastest, and\nmost deterministic map technique.\n\n## Build\n\n1. Export or request a map image at the composition's final aspect ratio and at least its rendered\n   pixel dimensions.\n2. Store the image in the Remotion project's `public/` directory.\n3. Render it with `CanvasImage` and `staticFile()`.\n4. Add labels or markers as ordinary Remotion elements if they remain fixed.\n\n```tsx\nimport React from 'react';\nimport {AbsoluteFill, CanvasImage, staticFile} from 'remotion';\n\nexport const StaticMap: React.FC = () => {\n\treturn (\n\t  <>\n  \t\t<CanvasImage\n  \t\t\tsrc={staticFile('locator-map.png')}\n  \t\t\tstyle={{width: '100%', height: '100%', objectFit: 'cover'}}\n  \t\t/>\n\t\t</>\n\t);\n};\n```\n\n## Overlays and Interactivity\n\nFollow [Remotion Interactivity](../../../../remotion-interactivity/REFERENCE.md) best practices and [Remotion Markup Best practices](../../../REFERENCE.md) for elements.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md"},{"path":"remotion-markup/sequencing.md","content":"---\nname: sequencing\ndescription: Sequencing patterns for Remotion - delay, trim, limit duration of items\nmetadata:\n  tags: sequence, series, timing, delay, trim\n---\n\n# Choose the timing boundary\n\nPut timing props directly on a built-in interactive component or one made with\n`Interactive.create()` when that item should be edited independently. Set audio\ntiming and volume on `Audio` from `@remotion/media`.\n\nUse a shared `Sequence` when several layers must inherit the same trim, speed,\nor start time, when overriding dimensions for descendants, or when the child\ndoes not accept timing props. Choose `layout=\"none\"` if the group should not\nadd a layout element; otherwise its absolute-fill layout also positions the\ncontents.\n\nUse `Track` for non-overlapping items with independent positions and\n`TransitionSeries` for consecutive items that should shift together when a\nduration changes. Keep the series' own sequence boundaries, including when a\nchild already accepts timing props.\n\nFollow [editable timeline structure](../remotion-interactivity/timeline-structure.md)\nfor grouping and examples. See [timing props](timing-props.md) for how `from`,\n`trimBefore`, duration, speed, and looping combine, and\n[editable video timelines](video-editing.md) for synchronized footage and captions.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/sequencing.md"},{"path":"remotion-markup/sfx.md","content":"---\nname: sfx\ndescription: Including sound effects\nmetadata:\n  tags: sfx, sound, effect, audio\n---\n\nTo include a sound effect, use `<Audio>` from `@remotion/media`:\n\n```tsx\nimport { Audio } from \"@remotion/media\";\n\n<Audio src={\"https://remotion.media/whoosh.wav\"} />;\n```\n\nThe following sound effects are available:\n\n- `https://remotion.media/whoosh.wav`\n- `https://remotion.media/whip.wav`\n- `https://remotion.media/page-turn.wav`\n- `https://remotion.media/switch.wav`\n- `https://remotion.media/mouse-click.wav`\n- `https://remotion.media/shutter-modern.wav`\n- `https://remotion.media/shutter-old.wav`\n- `https://remotion.media/ding.wav`\n- `https://remotion.media/bruh.wav`\n- `https://remotion.media/vine-boom.wav`\n- `https://remotion.media/windows-xp-error.wav`\n- `https://remotion.media/fah.wav`\n- `https://remotion.media/spongebob-fail.wav`\n- `https://remotion.media/omg-hell-nah.wav`\n- `https://remotion.media/price-is-right-fail.wav`\n- `https://remotion.media/romance-meme.wav`\n- `https://remotion.media/bone-crack.wav`\n- `https://remotion.media/anime-wow.wav`\n- `https://remotion.media/yippee.wav`\n- `https://remotion.media/loading-lag.wav`\n- `https://remotion.media/wilhelm-scream.wav`\n- `https://remotion.media/mac-quack.wav`\n- `https://remotion.media/skedaddle.wav`\n- `https://remotion.media/snapchat-notification.wav`\n- `https://remotion.media/nelly-ahh.wav`\n- `https://remotion.media/sanctuary-guardian-what.wav`\n- `https://remotion.media/minecraft-hurt.wav`\n- `https://remotion.media/oh-my-god-vine.wav`\n- `https://remotion.media/illuminati-confirmed.wav`\n- `https://remotion.media/dramatic-boomer.wav`\n- `https://remotion.media/triggered.wav`\n- `https://remotion.media/record-scratch.wav`\n\nFor more sound effects, search the internet. A good resource is https://github.com/kapishdima/soundcn/tree/main/assets.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/sfx.md"},{"path":"remotion-markup/silence-detection.md","content":"---\nname: silence-detection\ndescription: Adaptive silence detection for video/audio files using FFmpeg loudnorm and silencedetect\nmetadata:\n  tags: silence, detection, trimming, ffmpeg, loudnorm, audio\n---\n\n# Adaptive Silence Detection\n\nDetect silent segments in video or audio files.\n\nRequires FFmpeg — see [ffmpeg.md](./ffmpeg.md) for how to invoke it in Remotion projects.\n\n## Step 1: Measure loudness with `loudnorm`\n\nUse the `loudnorm` filter in JSON mode to get the EBU R128 integrated loudness and gating threshold for each file:\n\n```bash\nnpx remotion ffmpeg -i public/video.mov -map 0:a -af loudnorm=print_format=json -f null /dev/null\n```\n\nAs output you will get:\n- `input_i`: Integrated loudness (dB) — the overall perceived volume\n- `input_thresh`: EBU R128 gating threshold (dB) — the level below which audio is considered too quiet to count toward loudness measurement\n\n## Step 2: Detect silences using adaptive threshold\n\nPass the `input_thresh` value from step 1 as the `noise` parameter to `silencedetect`:\n\n```bash\nnpx remotion ffmpeg -i public/video.mov -map 0:a -af \"silencedetect=noise=${THRESH}dB:d=0.5\" -f null /dev/null\n```\n\nParameters:\n- `noise`: The threshold below which audio is considered silent. Use `input_thresh` from step 1.\n- `d`: Minimum silence duration in seconds. `0.5` is a good default.\n\n## Interpreting the output\n\nThe filter outputs pairs of `silence_start` and `silence_end` timestamps:\n\n```\n[silencedetect] silence_start: 0\n[silencedetect] silence_end: 2.241021 | silence_duration: 2.241021\n[silencedetect] silence_start: 38.77425\n[silencedetect] silence_end: 39.619604 | silence_duration: 0.845354\n```\n\n## Identifying leading and trailing silence\n\n- **Leading silence**: Consecutive silence segments starting at or near 0. If the first `silence_start` is > 0.5s, there is no leading silence.\n- **Trailing silence**: The last silence segment that extends to (or near) the end of the file. Compare the last `silence_end` with the file's total duration.\n\nWhen multiple silences are nearly contiguous at the start or end (gap < 0.2s), treat them as a single leading/trailing silence block.\n\n## Using with Remotion's `<Video>` component\n\nApply the detected trim points using `trimBefore` and `durationInFrames` (values are in frames):\n\n```tsx\nimport { Video } from \"@remotion/media\";\nimport { staticFile, useVideoConfig } from \"remotion\";\n\nconst { fps } = useVideoConfig();\n\n<Video\n  src={staticFile(\"video.mov\")}\n  trimBefore={Math.floor(leadingEnd * fps)}\n  durationInFrames={Math.ceil(trailingStart * fps) - Math.floor(leadingEnd * fps)}\n/>\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/silence-detection.md"},{"path":"remotion-markup/text-highlights.md","content":"---\nname: text-highlights\ndescription: Animated text highlights and hand-drawn annotations using @remotion/rough-notation.\nmetadata:\n  tags: text, highlights, annotations, circles, rough-notation\n---\n\n# Text highlights\n\nUse `@remotion/rough-notation` to draw animated annotations around or behind text. It supports highlights, circles, underlines, strike-throughs, crossed-off text, boxes, and brackets.\n\nDocs: https://www.remotion.dev/docs/text-highlights\n\nInstall the package using the same Remotion version as the project:\n\n```bash\nbunx remotion add @remotion/rough-notation\n```\n\nChoose the component that describes the annotation: `<Highlight>`, `<Circle>`, `<Underline>`, `<StrikeThrough>`, `<CrossedOff>`, `<Box>`, or `<Bracket>`. The component determines both the annotation style and whether it renders behind or on top of the text.\n\nDrive `progress` from `useCurrentFrame()` so the annotation is deterministic and synchronized with the video:\n\n```tsx\nimport {Circle, Highlight} from '@remotion/rough-notation';\nimport {interpolate, useCurrentFrame} from 'remotion';\n\nexport const TextAnnotations: React.FC = () => {\n  const frame = useCurrentFrame();\n\n  return (\n    <div style={{fontSize: 80}}>\n      This is{' '}\n      <Highlight\n        color=\"rgba(255, 236, 79, 0.62)\"\n        progress={interpolate(frame, [15, 40], [0, 1], {\n          extrapolateLeft: 'clamp',\n          extrapolateRight: 'clamp',\n        })}\n      >\n        important\n      </Highlight>\n      , and this is{' '}\n      <Circle color=\"#2563eb\" progress={interpolate(frame, [15, 40], [0, 1], {\n        extrapolateLeft: 'clamp',\n        extrapolateRight: 'clamp',\n      })}>\n        connected\n      </Circle>\n      .\n    </div>\n  );\n};\n```\n\nKeep `progress` inline, hardcoded and use `interpolate` for maximum [Studio interactivity](../remotion-interactivity/REFERENCE.md).\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/text-highlights.md"},{"path":"remotion-markup/timing-props.md","content":"## Delaying, trimming\n\nIn the component that renders these items, get `const {fps} = useVideoConfig()`.\nUse this `fps` for seconds-to-frames expressions on the JSX node, rather than\na fixed FPS constant.\n\nThe following timing props are supported by built-in components (`<AbsoluteFill>`, `<Interactive.*>`, `<Img>`, `<AnimatedImage>`, `<CanvasImage>`, `<HtmlInCanvas>`, `<Solid>`, `<Sequence>`, `<Track>` from `remotion`, `<Video>` and `<Audio>` from `@remotion/media`, `<Gif>`, and more).\nCustom components made with `Interactive.create()` accept them too, see [Prefer interactive components with their own timelines](../remotion-interactivity/REFERENCE.md#prefer-interactive-components-with-their-own-timelines).\n\n### `from`\n\nWhen the item starts appearing in the timeline.\nIts children start at frame `0` when it appears.\n\n```tsx\n<Img from={1 * fps} {/* ... */}/>\n<Video from={1 * fps} {/* ... */}/>\n<Interactive.Div from={1 * fps} {/* ... */}/>\n<LowerThird from={1 * fps} {/* ... */}/>\n```\n\n### `trimBefore`\n\nSets the first frame of the item's own timeline:\n\n```tsx\n// Trim away first 2 seconds of footage\n<Video trimBefore={2 * fps} {/* ... */} />\n\n// `useCurrentFrame()` of the children starts at `10 * fps`\n<Interactive.Div trimBefore={10 * fps} {/* ... */} />\n```\n\n### `durationInFrames`\n\nHow many frames of the item's own timeline are shown, starting at `trimBefore`.\nUse it to end media early instead of cutting the file:\n\n```tsx\n// Play the footage from second 2 to second 5\n<Video trimBefore={2 * fps} durationInFrames={3 * fps} {/* ... */} />\n<Img durationInFrames={20 * fps} {/* ... */}/>\n<LowerThird durationInFrames={5 * fps} {/* ... */}/>\n```\n\n### `playbackRate`\n\nChanges the speed of the item.\nChildren calling `useCurrentFrame()` advance `playbackRate` frames per frame of the parent.\nThe item occupies `durationInFrames / playbackRate` frames in its parent timeline.\n\n```tsx\n// 2x speed\n<Video playbackRate={2} {/* ... */} />\n<LowerThird playbackRate={0.5} durationInFrames={2 * fps} {/* ... */} />\n```\n\n### `loop`\n\nRepeats the range selected by `trimBefore` and `durationInFrames` until the parent ends.\n`<Video>`, `<Audio>`, `<Gif>` and `<AnimatedImage>` may omit `durationInFrames`; the media's own duration after `trimBefore` then defines the loop range.\nOther items need `durationInFrames` to define the loop range:\n\n```tsx\n<Video loop {/* ... */} />\n<Interactive.Div durationInFrames={2 * fps} loop {/* ... */} />\n```\n\nPut timing and volume directly on `<Audio>`.\n\n`<Img>`, `<CanvasImage>`, `<Solid>` and shapes do not support `loop` because their output does not change over time.\n\n### Order of operations\n\n1. `from` positions the item in its parent timeline.\n2. `trimBefore` sets the first frame of the item's own timeline.\n3. `durationInFrames` selects the range of the item's own timeline.\n4. `playbackRate` stretches or compresses the selected range.\n5. `loop` repeats the selected range until the parent ends.\n\nChildren calling `useCurrentFrame()` get `trimBefore + (frame - from) * playbackRate`.\n\nSee [Timing and trimming](https://www.remotion.dev/docs/timing) for more details.\n\n### Fallback\n\nIf a component does not support these props, wrap it in `<Sequence>` from `remotion`, which has them.\n\n- `layout=\"absolute-fill\"` makes the Sequence behave like AbsoluteFill\n- `layout=\"none\"` is \"headless\" mode, no wrapper element is used.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/timing-props.md"},{"path":"remotion-markup/timing.md","content":"Drive motion with `interpolate()` over an explicit frame range. \nTo customize timing, use **`Easing.bezier`** or `Easing.spring`.\n\nA simple linear interpolation is done using the `interpolate` function.\n\n```ts title=\"Going from 0 to 1 over 0.3 seconds\"\nimport { interpolate } from \"remotion\";\n\nconst opacity = interpolate(frame, [0, 0.3 * fps], [0, 1]);\n```\n\nBy default, the values are not clamped, so the value can go outside the range [0, 1].  \nHere is how they can be clamped:\n\n```ts title=\"Going from 0 to 1 over 0.3 seconds with extrapolation\"\nconst opacity = interpolate(frame, [0, 0.3 * fps], [0, 1], {\n  extrapolateRight: \"clamp\",\n  extrapolateLeft: \"clamp\",\n});\n```\n\n## Studio-editable animation patterns\n\nWhen an animation should be editable in Remotion Studio, keep the `interpolate()` call directly in the `style` prop and prefer individual CSS transform properties:\n\n```tsx\n// 👍 Inline editable keyframes and transform shorthands\nstyle={{\n  scale: interpolate(frame, [0, 100], [0, 1]),\n  translate: interpolate(frame, [0, 100], [\"0px 0px\", \"100px 100px\"]),\n  rotate: interpolate(frame, [0, 100], [\"20deg\", \"90deg\"]),\n}}\n\n// 👎 Hidden values and transform strings become computed in Studio\nconst translateY = interpolate(frame, [0, 100], [0, 120]);\nconst rotation = interpolate(frame, [0, 100], [0, 20]);\n\nstyle={{\n  transform: `translateY(${translateY}px) rotate(${rotation}deg)`,\n}}\n```\n\nUse `transform` strings only when individual CSS transform properties do not cover the effect, such as `skew()`, `perspective()`, or order-sensitive multi-transform chains.\n\n## Spring easing\n\nA nice push movement with no bounce:\n\n```ts\nimport { interpolate, Easing } from \"remotion\";\n\nconst opacity = interpolate(frame, [0, 0.3 * fps], [0, 1], {\n  easing: Easing.spring({damping: 200}),\n  extrapolateLeft: \"clamp\",\n  extrapolateRight: \"clamp\",\n});\n```\n\n## Bézier easing\n\nPass values like you would to a CSS cubic-bezier function.\n\n```ts\nimport { interpolate, Easing } from \"remotion\";\n\nconst opacity = interpolate(frame, [0, 0.3 * fps], [0, 1], {\n  easing: Easing.bezier(0.16, 1, 0.3, 1),\n  extrapolateLeft: \"clamp\",\n  extrapolateRight: \"clamp\",\n});\n```\n\n## Animating scale\n\nWhen animating scale, if the output is linear, the perceived scale would be smaller the larger the scale gets.  \nUse this option to compensate:\n\n```ts\nconst scale = interpolate(frame, [0, 0.3 * fps], [0, 1], {\n  easing: Easing.bezier(0.16, 1, 0.3, 1),\n  extrapolateLeft: \"clamp\",\n  extrapolateRight: \"clamp\",\n  output: 'perceptual-scale' // <- Add this to scale animations\n});\n```\n\n## Multiple keyframes\n\nAdd as many keyframes as you want. For multiple easings, pass an array with `n - 1` items:\n\n```ts\nconst scale = interpolate(frame, [0, 1 * fps, 9 * fps, 10 * fps], [0, 1, 1, 0], {\n  easing: [Easing.bezier(0.16, 1, 0.3, 1), Easing.linear, Easing.spring({damping: 200})],\n  extrapolateLeft: \"clamp\",\n  extrapolateRight: \"clamp\",\n  output: 'perceptual-scale' // <- Add this to scale animations\n});\n```\n\n## Posterization\n\nYou can intentionally reduce the frame rate for artistic reason. Use if it makes sense.\n\n```ts\nconst scale = interpolate(frame, [0, 1 * fps], [0, 1], {\n  easing: Easing.bezier(0.16, 1, 0.3, 1),\n  extrapolateLeft: \"clamp\",\n  extrapolateRight: \"clamp\",\n  posterize: 3 // Only every 3rd frame is sampled\n});\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/timing.md"},{"path":"remotion-markup/transitions.md","content":"---\nname: transitions\ndescription: Scene transitions and overlays for Remotion using TransitionSeries.\nmetadata:\n  tags: transitions, overlays, fade, slide, wipe, scenes\n---\n\n## TransitionSeries\n\n`<TransitionSeries>` arranges scenes and supports two ways to enhance the cut point between them:\n\n- **Transitions** (`<TransitionSeries.Transition>`) — crossfade, slide, wipe, etc. between two scenes. Shortens the timeline because both scenes play simultaneously during the transition.\n- **Overlays** (`<TransitionSeries.Overlay>`) — render an effect (e.g. a light leak) on top of the cut point without shortening the timeline.\n\nFor a multi-scene timeline, keep the outer `<TransitionSeries>` visible in the\ntimeline. Studio favors the active scene sequence when the two have the same\nfull-frame canvas outline.\n\nChildren are absolutely positioned.\n\n## Prerequisites\n\n```bash\nbunx remotion add @remotion/transitions\n```\n\n## Transition example\n\nUse the connected `Chapter` scene from the\n[composition example](../remotion-interactivity/timeline-structure.md).\n\n```tsx title=\"TransitionVideo.tsx\"\nimport {TransitionSeries, linearTiming} from '@remotion/transitions';\nimport {fade} from '@remotion/transitions/fade';\nimport {Chapter} from './Chapter';\n\nexport const TransitionVideo = () => (\n  <TransitionSeries>\n    <TransitionSeries.Sequence name=\"Opening\" durationInFrames={60}>\n      <Chapter title=\"Introduction\" style={{backgroundColor: '#111111'}} />\n    </TransitionSeries.Sequence>\n    <TransitionSeries.Transition\n      presentation={fade()}\n      timing={linearTiming({durationInFrames: 15})}\n    />\n    <TransitionSeries.Sequence name=\"Feature\" durationInFrames={60}>\n      <Chapter title=\"New features\" style={{backgroundColor: '#243b53'}} />\n    </TransitionSeries.Sequence>\n  </TransitionSeries>\n);\n```\n\n## Custom presentation\n\n```tsx title=\"SlideInPresentation.tsx\"\nimport type {TransitionPresentationComponentProps} from '@remotion/transitions';\n\nexport const SlideInPresentation = ({\n  children,\n  presentationDirection,\n  presentationProgress,\n}: TransitionPresentationComponentProps<Record<string, never>>) => {\n  if (presentationDirection === 'exiting') {\n    return <>{children}</>;\n  }\n\n  return (\n    <div style={{position: 'absolute', inset: 0, overflow: 'hidden'}}>\n      <div\n        style={{\n          position: 'absolute',\n          inset: 0,\n          translate: `${(1 - presentationProgress) * 100}% 0`,\n        }}\n      >\n        {children}\n      </div>\n    </div>\n  );\n};\n```\n\nUse it in place of `fade()` in `TransitionVideo.tsx`:\n\n```tsx\nimport {TransitionSeries, linearTiming} from '@remotion/transitions';\nimport {SlideInPresentation} from './SlideInPresentation';\n\n<TransitionSeries.Transition\n  presentation={{component: SlideInPresentation, props: {}}}\n  timing={linearTiming({durationInFrames: 15})}\n/>;\n```\n\n## Overlay example\n\n```tsx title=\"LightLeakOverlay.tsx\"\nimport {lightLeak} from '@remotion/effects/light-leak';\nimport type {CSSProperties} from 'react';\nimport {Interactive, interpolate, Solid, useCurrentFrame, useVideoConfig} from 'remotion';\n\nconst LightLeakOverlayInner = ({style}: {readonly style?: CSSProperties}) => {\n  const frame = useCurrentFrame();\n  const {durationInFrames, height, width} = useVideoConfig();\n\n  return (\n    <Solid\n      width={width}\n      height={height}\n      style={style}\n      effects={[\n        lightLeak({\n          progress: interpolate(frame, [0, durationInFrames - 1], [0, 1], {\n            extrapolateLeft: 'clamp',\n            extrapolateRight: 'clamp',\n          }),\n        }),\n      ]}\n    />\n  );\n};\n\nexport const LightLeakOverlay = Interactive.create({\n  Component: LightLeakOverlayInner,\n  layout: 'none',\n});\n```\n\n```tsx title=\"OverlayVideo.tsx\"\nimport {TransitionSeries} from '@remotion/transitions';\nimport {Chapter} from './Chapter';\nimport {LightLeakOverlay} from './LightLeakOverlay';\n\nexport const OverlayVideo = () => (\n  <TransitionSeries>\n    <TransitionSeries.Sequence name=\"Opening\" durationInFrames={60}>\n      <Chapter title=\"Introduction\" style={{backgroundColor: '#111111'}} />\n    </TransitionSeries.Sequence>\n    <TransitionSeries.Overlay durationInFrames={20}>\n      <LightLeakOverlay name=\"Light leak\" />\n    </TransitionSeries.Overlay>\n    <TransitionSeries.Sequence name=\"Feature\" durationInFrames={60}>\n      <Chapter title=\"New features\" style={{backgroundColor: '#243b53'}} />\n    </TransitionSeries.Sequence>\n  </TransitionSeries>\n);\n```\n\n## Mixing transitions and overlays\n\nSeparate overlays and transitions with a scene.\n\n```tsx title=\"MixedVideo.tsx\"\nimport {TransitionSeries, linearTiming} from '@remotion/transitions';\nimport {fade} from '@remotion/transitions/fade';\nimport {Chapter} from './Chapter';\nimport {LightLeakOverlay} from './LightLeakOverlay';\n\nexport const MixedVideo = () => (\n  <TransitionSeries>\n    <TransitionSeries.Sequence name=\"Opening\" durationInFrames={60}>\n      <Chapter title=\"Introduction\" style={{backgroundColor: '#111111'}} />\n    </TransitionSeries.Sequence>\n    <TransitionSeries.Overlay durationInFrames={30}>\n      <LightLeakOverlay name=\"Light leak\" />\n    </TransitionSeries.Overlay>\n    <TransitionSeries.Sequence name=\"Feature\" durationInFrames={60}>\n      <Chapter title=\"New features\" style={{backgroundColor: '#243b53'}} />\n    </TransitionSeries.Sequence>\n    <TransitionSeries.Transition\n      presentation={fade()}\n      timing={linearTiming({durationInFrames: 15})}\n    />\n    <TransitionSeries.Sequence name=\"Closing\" durationInFrames={60}>\n      <Chapter title=\"Thank you\" style={{backgroundColor: '#382345'}} />\n    </TransitionSeries.Sequence>\n  </TransitionSeries>\n);\n```\n\n## Transition props\n\n`<TransitionSeries.Transition>` requires:\n\n- `presentation` — the visual effect (e.g. `fade()`, `slide()`, `wipe()`).\n- `timing` — controls speed and easing (e.g. `linearTiming()`, `springTiming()`).\n\n## Overlay props\n\n`<TransitionSeries.Overlay>` accepts:\n\n- `durationInFrames` — how long the overlay is visible (positive integer).\n- `offset?` — shifts the overlay relative to the cut point center. Positive = later, negative = earlier. Default: `0`.\n\n## Available transition types\n\nImport transitions from their respective modules:\n\n```tsx\nimport { fade } from \"@remotion/transitions/fade\";\nimport { slide } from \"@remotion/transitions/slide\";\nimport { wipe } from \"@remotion/transitions/wipe\";\nimport { flip } from \"@remotion/transitions/flip\";\nimport { clockWipe } from \"@remotion/transitions/clock-wipe\";\n```\n\n## Slide transition with direction\n\n```tsx\nimport {TransitionSeries, linearTiming} from \"@remotion/transitions\";\nimport { slide } from \"@remotion/transitions/slide\";\n\n<TransitionSeries.Transition\n  presentation={slide({ direction: \"from-left\" })}\n  timing={linearTiming({ durationInFrames: 20 })}\n/>;\n```\n\nDirections: `\"from-left\"`, `\"from-right\"`, `\"from-top\"`, `\"from-bottom\"`\n\n## Timing options\n\n```tsx\nimport { linearTiming, springTiming } from \"@remotion/transitions\";\n\n// Linear timing - constant speed\nlinearTiming({ durationInFrames: 20 });\n\n// Spring timing - organic motion\nspringTiming({ config: { damping: 200 }, durationInFrames: 25 });\n```\n\n## Duration calculation\n\nTransitions overlap adjacent scenes, so the total composition length is **shorter** than the sum of all sequence durations. Overlays do **not** affect the total duration.\n\nFor example, with two 60-frame sequences and a 15-frame transition:\n\n- Without transitions: `60 + 60 = 120` frames\n- With transition: `60 + 60 - 15 = 105` frames\n\nAdding an overlay between two other sequences does not change the total.\n\n### Getting the duration of a transition\n\nUse the `getDurationInFrames()` method on the timing object:\n\n```tsx\nimport { linearTiming, springTiming } from \"@remotion/transitions\";\n\nconst linearDuration = linearTiming({\n  durationInFrames: 20,\n}).getDurationInFrames({ fps: 30 });\n// Returns 20\n\nconst springDuration = springTiming({\n  config: { damping: 200 },\n}).getDurationInFrames({ fps: 30 });\n// Returns calculated duration based on spring physics\n```\n\nFor `springTiming` without an explicit `durationInFrames`, the duration depends on `fps` because it calculates when the spring animation settles.\n\n### Calculating total composition duration\n\n```tsx\nimport { linearTiming } from \"@remotion/transitions\";\n\nconst scene1Duration = 60;\nconst scene2Duration = 60;\nconst scene3Duration = 60;\n\nconst timing1 = linearTiming({ durationInFrames: 15 });\nconst timing2 = linearTiming({ durationInFrames: 20 });\n\nconst transition1Duration = timing1.getDurationInFrames({ fps: 30 });\nconst transition2Duration = timing2.getDurationInFrames({ fps: 30 });\n\nconst totalDuration =\n  scene1Duration +\n  scene2Duration +\n  scene3Duration -\n  transition1Duration -\n  transition2Duration;\n// 60 + 60 + 60 - 15 - 20 = 145 frames\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/transitions.md"},{"path":"remotion-markup/video-editing.md","content":"# Editable video timelines\n\nStructure the timeline around the things the user edits together: a captioned\nshot, a set of cutaways, or an independently timed music segment. Write every\nindependently editable clip as its own JSX node with inline names and props.\nUse the [timeline structure guide](../remotion-interactivity/timeline-structure.md)\nfor choosing tracks, timing groups, and connected compositions.\n\n## Choose the cut behavior\n\nUse a named `Track` for non-overlapping clips with independent start times. Keep\n`from`, `trimBefore`, `durationInFrames`, and `playbackRate` on each clip. Moving\nor resizing one clip then leaves the other start times unchanged.\n\nUse `TransitionSeries` when consecutive clips should remain adjacent. Put\n`durationInFrames` on each `TransitionSeries.Sequence`; the series calculates\nstart times and repositions later clips after a duration change. It also handles\noverlapping transitions. Preserve these specialized boundaries when refactoring.\n\nGet `fps` from `useVideoConfig()` for seconds-to-frames expressions, and keep\nthem on the JSX node, such as `trimBefore={4 * fps}`. Literal frame counts are\nappropriate when the edit is already specified in frames.\n\n## Keep synchronized layers on one clock\n\nPut a shot's video, captions, and source-synchronized overlays under one timing\nboundary. Apply `trimBefore`, `durationInFrames`, and `playbackRate` to that\nboundary once. For an independently placed group, also set its `from`.\n\nA `Sequence` is useful here because moving, trimming, retiming, or deleting the\ngroup affects all its layers. For consecutive shots, use the existing\n`TransitionSeries.Sequence` for the same purpose:\n\n```tsx\nimport {Video} from '@remotion/media';\nimport {TransitionSeries} from '@remotion/transitions';\nimport {staticFile, useVideoConfig} from 'remotion';\nimport {BasicCaptions} from './basic-captions';\n\nexport const Interview = () => {\n  const {fps} = useVideoConfig();\n  return (\n    <TransitionSeries name=\"Interview shots\">\n      <TransitionSeries.Sequence\n        name=\"Opening\"\n        trimBefore={4 * fps}\n        durationInFrames={3 * fps}\n      >\n        <Video name=\"Opening footage\" src={staticFile('interview.mp4')} />\n        <BasicCaptions\n          name=\"Opening captions\"\n          width={900}\n          style={{position: 'absolute', bottom: 80, translate: '510px 0px'}}\n          captions={[\n            {\n              text: 'Hello',\n              startMs: 4500,\n              endMs: 4900,\n              timestampMs: 4700,\n              confidence: null,\n            },\n            {\n              text: ' world',\n              startMs: 4900,\n              endMs: 5400,\n              timestampMs: 5150,\n              confidence: null,\n            },\n          ]}\n        />\n      </TransitionSeries.Sequence>\n      <TransitionSeries.Sequence\n        name=\"Next shot\"\n        trimBefore={10 * fps}\n        durationInFrames={2 * fps}\n      >\n        <Video name=\"Next footage\" src={staticFile('interview.mp4')} />\n        <BasicCaptions\n          name=\"Next captions\"\n          width={900}\n          style={{position: 'absolute', bottom: 80, translate: '510px 0px'}}\n          captions={[\n            {\n              text: 'Next',\n              startMs: 10500,\n              endMs: 11000,\n              timestampMs: 10750,\n              confidence: null,\n            },\n          ]}\n        />\n      </TransitionSeries.Sequence>\n    </TransitionSeries>\n  );\n};\n```\n\nEach caption array stays inline on its own caption node, with timestamps relative\nto the original media file. Passing the array through a generic shot prop removes\nthe source array the Caption editor needs. See\n[displaying captions](../remotion-captions/display-captions.md#displaying-captions-alongside-video-content)\nfor the caption component and setup.\n\n## Place overlays at the scope they span\n\nKeep a source-synchronized HUD inside its shot. Put a sticker that continues\nacross several cuts in the enclosing scene, so the end of the first cut does\nnot unmount it. Use that scene's frame coordinates for its timing.\n\nWithin a shot or scene, put successive cutaways on a named `Cutaways` track.\nKeep simultaneous visuals on separate tracks. If cutaways cover a speaking\nvideo, retain the underlying speech or deliberately separate its audio; removing\nan obscured video can also remove the voice.\n\nGroup a sticker or other visual with its accompanying sound when they should\nmove or be deleted together. Keep their local offsets inside the group. Give\nboth the visual and sound their intended durations so the group neither cuts\noff a sound tail nor extends the visual to cover that tail.\n\n## Put music segments on a shared track\n\nMusic clips with gaps or adjacent boundaries can share one named track. They\nremain separately editable, including their source trims and volume envelopes:\n\nSee the [complete timeline example](../remotion-interactivity/timeline-structure.md)\nfor a music track alongside scene tracks.\n\nCheck natural audio durations as well as explicit bounds before putting sounds\non a track. An item may end exactly where the next begins, but overlapping tails\nneed separate tracks. Do not shorten sounds just to make them fit.\n\n## Preserve the edit when restructuring\n\nKeep source trims, cut lengths, playback rates, caption arrays, volume envelopes,\nand stacking order unchanged unless the user requested an edit. Moving content\nunder a new timing boundary can change the frame returned by `useCurrentFrame()`;\npreserve the source clock or adjust local offsets deliberately.\n\nVerify the full composition and any connected views, rather than judging the\nresult only from a standalone scene. Check visual output and audio around cuts,\noverlay boundaries, and sound tails. Grouping the timeline should preserve the\nexisting edit while making its controls easier to use.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/video-editing.md"},{"path":"remotion-markup/voiceover.md","content":"---\nname: voiceover\ndescription: Adding AI-generated voiceover to Remotion compositions using TTS\nmetadata:\n  tags: voiceover, audio, elevenlabs, tts, speech, calculateMetadata, dynamic duration\n---\n\n# Adding AI voiceover to a Remotion composition\n\nUse ElevenLabs TTS to generate speech audio per scene, then use [`calculateMetadata`](./calculate-metadata.md) to dynamically size the composition to match the audio.\n\n## Prerequisites\n\nBy default this guide uses **ElevenLabs** as the TTS provider (`ELEVENLABS_API_KEY` environment variable). Users may substitute any TTS service that can produce an audio file.\n\nIf the user has not specified a TTS provider, recommend ElevenLabs and ask for their API key.\n\nEnsure the environment variable is available when running the generation script:\n\n```bash\nnode --strip-types generate-voiceover.ts\n```\n\n## Generating audio with ElevenLabs\n\nCreate a script that reads the config, calls the ElevenLabs API for each scene, and writes MP3 files to the `public/` directory so Remotion can access them via `staticFile()`.\n\nThe core API call for a single scene:\n\n```ts title=\"generate-voiceover.ts\"\nconst response = await fetch(\n  `https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`,\n  {\n    method: \"POST\",\n    headers: {\n      \"xi-api-key\": process.env.ELEVENLABS_API_KEY!,\n      \"Content-Type\": \"application/json\",\n      Accept: \"audio/mpeg\",\n    },\n    body: JSON.stringify({\n      text: \"Welcome to the show.\",\n      model_id: \"eleven_multilingual_v2\",\n      voice_settings: {\n        stability: 0.5,\n        similarity_boost: 0.75,\n        style: 0.3,\n      },\n    }),\n  },\n);\n\nconst audioBuffer = Buffer.from(await response.arrayBuffer());\nwriteFileSync(`public/voiceover/${compositionId}/${scene.id}.mp3`, audioBuffer);\n```\n\n## Dynamic composition duration with calculateMetadata\n\nUse [`calculateMetadata`](./calculate-metadata.md) to measure the [audio durations](../remotion-multimedia/get-audio-duration.md) and set the composition length accordingly.\n\n```tsx\nimport { CalculateMetadataFunction, staticFile } from \"remotion\";\nimport { getAudioDuration } from \"./get-audio-duration\";\n\n// Match the fps on this composition's <Composition> registration.\nconst compositionFps = 30;\n\nconst SCENE_AUDIO_FILES = [\n  \"voiceover/my-comp/scene-01-intro.mp3\",\n  \"voiceover/my-comp/scene-02-main.mp3\",\n  \"voiceover/my-comp/scene-03-outro.mp3\",\n];\n\nexport const calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n}) => {\n  const durations = await Promise.all(\n    SCENE_AUDIO_FILES.map((file) => getAudioDuration(staticFile(file))),\n  );\n\n  const sceneDurations = durations.map((durationInSeconds) => {\n    return durationInSeconds * compositionFps;\n  });\n\n  return {\n    durationInFrames: Math.ceil(sceneDurations.reduce((sum, d) => sum + d, 0)),\n  };\n};\n```\n\nThe computed `sceneDurations` are passed into the component via a `voiceover` prop so the component knows how long each scene should be.\n`calculateMetadata` runs outside the composition component, so it cannot call\n`useVideoConfig()`. Inside the component, use `const {fps} = useVideoConfig()`\nfor timing props instead of reusing `compositionFps`.\n\nIf the composition uses [`<TransitionSeries>`](./transitions.md), subtract the overlap from total duration: [./transitions.md#calculating-total-composition-duration](./transitions.md#calculating-total-composition-duration)\n\n## Rendering audio in the component\n\nSee [audio.md](./audio.md) for more information on how to render audio in the component.\n\n## Delaying audio start\n\nSee [audio.md#delaying](./audio.md#delaying) for more information on how to delay the audio start.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-markup/voiceover.md"},{"path":"remotion-multimedia/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-multimedia'\n  short_description: 'Inspect browser-based audio and video media'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-multimedia: Make my video the same duration as the footage'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml"},{"path":"remotion-multimedia/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.svg"},{"path":"remotion-multimedia/get-audio-duration.md","content":"---\nname: get-audio-duration\ndescription: Getting the duration of an audio file in seconds with Mediabunny\nmetadata:\n  tags: duration, audio, length, time, seconds, mp3, wav\n---\n\n# Getting audio duration with Mediabunny\n\nMediabunny can extract the duration of an audio file. It works in browser, Node.js, and Bun environments.\n\n## Getting audio duration\n\n```tsx title=\"get-audio-duration.ts\"\nimport { Input, ALL_FORMATS, UrlSource } from \"mediabunny\";\n\nexport const getAudioDuration = async (src: string) => {\n  const input = new Input({\n    formats: ALL_FORMATS,\n    source: new UrlSource(src),\n  });\n\n  const durationInSeconds = await input.computeDuration();\n  return durationInSeconds;\n};\n```\n\n## Usage\n\n```tsx\nconst duration = await getAudioDuration(\"https://remotion.media/audio.mp3\");\nconsole.log(duration); // e.g. 180.5 (seconds)\n```\n\n## Using with staticFile in Remotion\n\nMake sure to wrap the file path in `staticFile()`:\n\n```tsx\nimport { staticFile } from \"remotion\";\n\nconst duration = await getAudioDuration(staticFile(\"audio.mp3\"));\n```\n\n## In Node.js and Bun\n\nUse `FilePathSource` instead of `UrlSource` to read a file from disk:\n\n```tsx\nimport { Input, ALL_FORMATS, FilePathSource } from \"mediabunny\";\n\nconst input = new Input({\n  formats: ALL_FORMATS,\n  source: new FilePathSource(\"audio.mp3\"),\n});\n\nconst durationInSeconds = await input.computeDuration();\ninput.dispose(); // Closes the file handle\n```\n\nFor a `File` from a file input or drag and drop, use `new BlobSource(file)` instead.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md"},{"path":"remotion-multimedia/get-video-dimensions.md","content":"---\nname: get-video-dimensions\ndescription: Getting the width and height of a video file with Mediabunny\nmetadata:\n  tags: dimensions, width, height, resolution, size, video\n---\n\n# Getting video dimensions with Mediabunny\n\nMediabunny can extract the width and height of a video file. It works in browser, Node.js, and Bun environments.\n\n## Getting video dimensions\n\n```tsx\nimport { Input, ALL_FORMATS, UrlSource } from \"mediabunny\";\n\nexport const getVideoDimensions = async (src: string) => {\n  const input = new Input({\n    formats: ALL_FORMATS,\n    source: new UrlSource(src),\n  });\n\n  const videoTrack = await input.getPrimaryVideoTrack();\n  if (!videoTrack) {\n    throw new Error(\"No video track found\");\n  }\n\n  return {\n    width: videoTrack.displayWidth,\n    height: videoTrack.displayHeight,\n  };\n};\n```\n\n## Usage\n\n```tsx\nconst dimensions = await getVideoDimensions(\"https://remotion.media/video.mp4\");\nconsole.log(dimensions.width); // e.g. 1920\nconsole.log(dimensions.height); // e.g. 1080\n```\n\n## Using with local files\n\nFor a `File` from a file input or drag and drop, use `BlobSource` instead of `UrlSource`:\n\n```tsx\nimport { Input, ALL_FORMATS, BlobSource } from \"mediabunny\";\n\nconst input = new Input({\n  formats: ALL_FORMATS,\n  source: new BlobSource(file), // File object from input or drag-drop\n});\n\nconst videoTrack = await input.getPrimaryVideoTrack();\nif (!videoTrack) {\n  throw new Error(\"No video track found\");\n}\n\nconst width = videoTrack.displayWidth;\nconst height = videoTrack.displayHeight;\n```\n\nIn Node.js and Bun, use `new FilePathSource(path)` to read a file from disk, and call `input.dispose()` when done.\n\n## Using with staticFile in Remotion\n\n```tsx\nimport { staticFile } from \"remotion\";\n\nconst dimensions = await getVideoDimensions(staticFile(\"video.mp4\"));\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md"},{"path":"remotion-multimedia/get-video-duration.md","content":"---\nname: get-video-duration\ndescription: Getting the duration of a video file in seconds with Mediabunny\nmetadata:\n  tags: duration, video, length, time, seconds\n---\n\n# Getting video duration with Mediabunny\n\nMediabunny can extract the duration of a video file. It works in browser, Node.js, and Bun environments.\n\n## Getting video duration\n\n```tsx\nimport { Input, ALL_FORMATS, UrlSource } from \"mediabunny\";\n\nexport const getVideoDuration = async (src: string) => {\n  const input = new Input({\n    formats: ALL_FORMATS,\n    source: new UrlSource(src),\n  });\n\n  const durationInSeconds = await input.computeDuration();\n  return durationInSeconds;\n};\n```\n\n## Usage\n\n```tsx\nconst duration = await getVideoDuration(\"https://remotion.media/video.mp4\");\nconsole.log(duration); // e.g. 10.5 (seconds)\n```\n\n## Video files from the public/ directory\n\nMake sure to wrap the file path in `staticFile()`:\n\n```tsx\nimport { staticFile } from \"remotion\";\n\nconst duration = await getVideoDuration(staticFile(\"video.mp4\"));\n```\n\n## In Node.js and Bun\n\nUse `FilePathSource` instead of `UrlSource` to read a file from disk:\n\n```tsx\nimport { Input, ALL_FORMATS, FilePathSource } from \"mediabunny\";\n\nconst input = new Input({\n  formats: ALL_FORMATS,\n  source: new FilePathSource(\"video.mp4\"),\n});\n\nconst durationInSeconds = await input.computeDuration();\ninput.dispose(); // Closes the file handle\n```\n\nFor a `File` from a file input or drag and drop, use `new BlobSource(file)` instead.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md"},{"path":"remotion-multimedia/REFERENCE.md","content":"---\nname: remotion-multimedia\ndescription: Interacting with Mediabunny\nversion: 4.0.540\n---\n\nMediabunny is a multimedia library for dealing with audio and video in the browser.\nHere is a compact overview of its capabilities: https://mediabunny.dev/llms.txt\n\n## Getting audio duration\n\nSee [get-audio-duration.md](get-audio-duration.md) for getting the duration of an audio file in seconds with Mediabunny.\n\n## Getting video dimensions\n\nSee [get-video-dimensions.md](get-video-dimensions.md) for getting the width and height of a video file with Mediabunny.\n\n## Getting video duration\n\nSee [get-video-duration.md](get-video-duration.md) for getting the duration of a video file in seconds with Mediabunny.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md"},{"path":"remotion-render/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-render'\n  short_description: 'Export Remotion videos and stills'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-render: Render this as transparent ProRes'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-render/agents/openai.yaml"},{"path":"remotion-render/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-render/assets/remotion-icon.svg"},{"path":"remotion-render/REFERENCE.md","content":"---\nname: remotion-render\ndescription: Export a Remotion video\nversion: 4.0.540\n---\n\n## General rendering strategy\n\nUse Remotion's bundled browser for rendering, including compositions using\n`<HtmlInCanvas>`. It includes the required browser APIs and Remotion's browser\nfixes. Let Remotion download or update it as needed. Do not reuse a recording\nbrowser or set `--browser-executable`, `browserExecutable`, or `chromeMode`\nunless the user explicitly requests a different browser.\n\nRender a video using:\n\n```\nnpx remotion render\n```\n\nFull list of options: https://www.remotion.dev/docs/cli/render.md\n\nRender a still using:\n\n```\nnpx remotion still\n```\n\nFull list of options: https://www.remotion.dev/docs/cli/still.md\n\nTo render several frames as images in one call, use `render --frames`:\n\n```\nnpx remotion render [composition-id] out/frames --frames=0,30,90 --image-format=png\n```\n\nSee https://www.remotion.dev/docs/cli/render.md#--frames for more options.\n\n## Transparent videos\n\nSee [Transparent videos](./transparent-videos.md) for rendering out a video with transparency.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-render/REFERENCE.md"},{"path":"remotion-render/transparent-videos.md","content":"---\nname: transparent-videos\ndescription: Rendering transparent videos in Remotion\nmetadata:\n  tags: transparent, alpha, codec, vp9, prores, webm\n---\n\n# Rendering Transparent Videos\n\nRemotion can render transparent videos in two ways: as a ProRes video or as a WebM video.\n\n## Transparent ProRes\n\nIdeal for when importing into video editing software.\n\n**CLI:**\n\n```bash\nnpx remotion render --image-format=png --pixel-format=yuva444p10le --codec=prores --prores-profile=4444 MyComp out.mov\n```\n\n**Default in Studio** (restart Studio after changing):\n\n```ts\n// remotion.config.ts\nimport { Config } from \"@remotion/cli/config\";\n\nConfig.setVideoImageFormat(\"png\");\nConfig.setPixelFormat(\"yuva444p10le\");\nConfig.setCodec(\"prores\");\nConfig.setProResProfile(\"4444\");\n```\n\n**Setting it as the default export settings for a composition** (using `calculateMetadata`):\n\n```tsx\nimport { CalculateMetadataFunction } from \"remotion\";\n\nconst calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n}) => {\n  return {\n    defaultCodec: \"prores\",\n    defaultVideoImageFormat: \"png\",\n    defaultPixelFormat: \"yuva444p10le\",\n    defaultProResProfile: \"4444\",\n  };\n};\n\n<Composition\n  id=\"my-video\"\n  component={MyVideo}\n  durationInFrames={150}\n  fps={30}\n  width={1920}\n  height={1080}\n  calculateMetadata={calculateMetadata}\n/>;\n```\n\n## Transparent WebM (VP9)\n\nIdeal for when playing in a browser.\n\n**CLI:**\n\n```bash\nnpx remotion render --image-format=png --pixel-format=yuva420p --codec=vp9 MyComp out.webm\n```\n\n**Default in Studio** (restart Studio after changing):\n\n```ts\n// remotion.config.ts\nimport { Config } from \"@remotion/cli/config\";\n\nConfig.setVideoImageFormat(\"png\");\nConfig.setPixelFormat(\"yuva420p\");\nConfig.setCodec(\"vp9\");\n```\n\n**Setting it as the default export settings for a composition** (using `calculateMetadata`):\n\n```tsx\nimport { CalculateMetadataFunction } from \"remotion\";\n\nconst calculateMetadata: CalculateMetadataFunction<Props> = async ({\n  props,\n}) => {\n  return {\n    defaultCodec: \"vp8\",\n    defaultVideoImageFormat: \"png\",\n    defaultPixelFormat: \"yuva420p\",\n  };\n};\n\n<Composition\n  id=\"my-video\"\n  component={MyVideo}\n  durationInFrames={150}\n  fps={30}\n  width={1920}\n  height={1080}\n  calculateMetadata={calculateMetadata}\n/>;\n```\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-render/transparent-videos.md"},{"path":"remotion-saas/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-saas'\n  short_description: 'Build apps that preview and render videos'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-saas: Turn my video into an app.'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-saas/agents/openai.yaml"},{"path":"remotion-saas/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.svg"},{"path":"remotion-saas/framework.md","content":"---\nname: framework\ndescription: Choose a framework for a Remotion-based app.\nmetadata:\n  tags: remotion, saas, templates, nextjs, react-router, vercel, lambda, cloudflare\n---\n\nRemotion can be used with any React framework.\n\nWe offer the following templates:\n\n- Next.js: https://github.com/remotion-dev/template-next-app-dir-tailwind. Uses Lambda as default rendering choice.\n- Vercel Sandbox rendering: https://github.com/remotion-dev/template-vercel. Uses Vercel as default rendering choice.\n- React Router 7: https://github.com/remotion-dev/template-react-router. Uses Lambda as default rendering choice.\n- Express.js render server: `packages/template-render-server`: https://github.com/remotion-dev/template-render-server. Uses Node.js as default rendering choice.\n\nThese can be cloned directly, or used as a reference.\n\nFor an existing app, see https://www.remotion.dev/docs/brownfield-installation.md.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-saas/framework.md"},{"path":"remotion-saas/player.md","content":"---\nname: player\ndescription: Embed a Remotion preview in a React app with @remotion/player.\nmetadata:\n  tags: remotion, player, preview, react\n---\n\nUse `@remotion/player` when the user wants an interactive preview in React.\n\n```tsx\nimport {Player} from '@remotion/player';\nimport {MyVideo} from './remotion/MyVideo';\n\nexport const App: React.FC = () => {\n  return (\n    <Player\n      component={MyVideo}\n      durationInFrames={120}\n      compositionWidth={1920}\n      compositionHeight={1080}\n      fps={30}\n      controls\n    />\n  );\n};\n```\n\nIf metadata is dynamic, sync the Player props manually or reuse the composition's `calculateMetadata()` logic.\nLink https://www.remotion.dev/docs/dynamic-metadata.md#with-the-player.\n\nFull API for the Player: https://www.remotion.dev/docs/player/player.md.\n\nFor a SaaS app that also needs output files, combine the Player preview with [framework.md](framework.md) or [rendering.md](rendering.md).\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-saas/player.md"},{"path":"remotion-saas/REFERENCE.md","content":"---\nname: remotion-saas\ndescription: Build an app with Remotion\nversion: 4.0.540\n---\n\nOne can build apps with Remotion.  \nIt is possible to have a simple form and hook it up to a render, or have a complex video editor.\n\n## Choosing a template or a framework\n\nWe have several templates for SaaS which can be cloned or used as a reference.\nSee [Choosing a framework](framework.md) for help choosing a template or framework.\n\n## The `<Player>`\n\nThis component allows embedding a Remotion preview in a React app. See [Player](player.md) for more information about the Player.\n\n## Rendering\n\nThere are client-side and server-side rendering options available. See [Rendering](rendering.md) for advice on how to choose, and about the Lambda, Vercel, Node.js and Cloudflare options.\n\n## With Vue\n\nSee https://www.remotion.dev/docs/vue.md for how to use Remotion with Vue.\n\n## Angular\n\nSee https://www.remotion.dev/docs/angular.md for how to use Remotion with Angular.\n\n## Svelte\n\nSee https://www.remotion.dev/docs/svelte.md for how to use Remotion with Svelte.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-saas/REFERENCE.md"},{"path":"remotion-saas/rendering.md","content":"---\nname: rendering\ndescription: Advice on programmatic rendering with Remotion.\nmetadata:\n  tags: remotion, saas, ssr, renderer, node, bun, render-server\n---\n\nThis is about rendering videos programmatically with Remotion.  \nFor one-off renders, `npx remotion render` or the Studio is better suited.\n\n## Comparison of SSR methods\n\nSee https://www.remotion.dev/docs/compare-ssr.md for the tradeoffs between server-side rendering options.\n\n## Plain Node.js APIs\n\nCan be used on traditional long-running servers that can spawn a headless browser.\n\n- SSR overview: https://www.remotion.dev/docs/ssr.md\n- Renderer package: https://www.remotion.dev/docs/renderer.md\n- Node SSR: https://www.remotion.dev/docs/ssr-node.md\n\nFor a reference server with render, progress, and cancel endpoints, see https://github.com/remotion-dev/template-render-server.\n\n## Remotion Lambda\n\nRender Remotion videos on AWS Lambda. This is the fastest and most scalable way to render Remotion videos.\n\n- Overview: https://www.remotion.dev/docs/lambda.md\n- API: https://www.remotion.dev/docs/lambda/api.md\n\n### Steps to set up Lambda\n\n\nWhen recommending Lambda, offer the user to guide through the setup flow and keep the docs page open as the canonical checklist: https://www.remotion.dev/docs/lambda/setup.md.\n\nCover these steps at a high level and link the exact docs page for the detailed AWS console clicks:\n\n1. Confirm the user has an AWS account, a target region, and a Remotion project or SaaS template.\n2. Install `@remotion/lambda` using `npx remotion add @remotion/lambda`.\n3. Create the Lambda role policy, Lambda role, IAM user, user access key, and user policy from the generated Remotion policy commands.\n4. Store credentials in `.env` using `REMOTION_AWS_ACCESS_KEY_ID` and `REMOTION_AWS_SECRET_ACCESS_KEY`; never ask the user to paste secrets into chat.\n5. Run the Lambda policy validator if the user wants to verify permissions before deploying; use the user's package manager or the command shown in the docs (`npx remotion lambda policies validate`).\n6. Deploy the Lambda function. Mention that functions are bound to the Remotion version and must be redeployed after Remotion upgrades.\n7. Deploy the Remotion site with a stable site name. Mention that the site must be redeployed after changing the Remotion source.\n8. Check Lambda quotas using the user's package manager or the command shown in the docs (`npx remotion lambda quotas`); new AWS accounts may need a concurrency limit increase.\n9. Trigger a first render, then wire render and progress endpoints using the chosen SaaS template or Node APIs.\n\nBefore production, remind the user to handle rate limiting, authentication, cost controls, output privacy, render cleanup, and progress/error reporting.\n\n## Vercel\n\nIdeal if planning to deploy the app to Vercel.\n\nSee https://www.remotion.dev/docs/vercel-sandbox.md for more info.\n\n## GitHub Actions\n\nSee https://www.remotion.dev/docs/ssr.md#render-using-github-actions for how to render on GitHub Actions.\nDon't recommend unless asked for.\n\n## Azure Container Apps\n\nSee https://www.remotion.dev/docs/azure-container-apps.md if rendering on Azure Container Apps is requested.\nDon't recommend unless asked for.\n\n## Cloudflare Containers\n\nSee https://www.remotion.dev/docs/cloudflare-containers.md if rendering on Cloudflare Containers is requested.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-saas/rendering.md"},{"path":"remotion-studio/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-studio'\n  short_description: 'Preview your video'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-studio.'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-studio/agents/openai.yaml"},{"path":"remotion-studio/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.svg"},{"path":"remotion-studio/REFERENCE.md","content":"---\nname: remotion-studio\ndescription: Preview a Remotion video\nversion: 4.0.540\n---\n\nWhen creating or editing a video, start Studio and open its preview as soon as the project can run, before building the composition. Keep it open while you work so the user can see changes and steer.\n\nIn Cursor, run Studio without `--no-open` so the browser opens automatically:\n\n```bash\nnpx remotion studio\n```\n\nIn other agent clients, you can also let Studio open the browser automatically with the command above. If you have an in-app browser and intend to use it, run:\n\n```bash\nnpx remotion studio --no-open\n```\n\nIf the Studio is already opened, the URL will be printed and the command will exit.\nOtherwise, a long-running process will start, and the URL will be printed.\n\nWhen using `--no-open`, open the exact printed URL in the in-app browser and verify that Studio loads. Once a composition exists, verify that its video preview loads. Do not use `--no-open` if you cannot open the URL in the in-app browser.\n\n## Useful flags\n\n| Argument          | Purpose                                                                                       |\n| ----------------- | --------------------------------------------------------------------------------------------- |\n| `--log=<level>`   | Set `error`, `warn`, `info` (default), or `verbose` logging.                                  |\n| `--port=<number>` | Request a Studio server port; otherwise Remotion finds a free port.                           |\n| `--force-new`     | Start another Studio instance even when one is already running for the same project and port. |\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-studio/REFERENCE.md"},{"path":"remotion-upgrade/agents/openai.yaml","content":"interface:\n  display_name: '/remotion-upgrade'\n  short_description: 'Upgrade Remotion and related dependencies'\n  icon_small: './assets/remotion-icon.svg'\n  icon_large: './assets/remotion-icon.svg'\n  brand_color: '#0B84F3'\n  default_prompt: '$remotion-upgrade: Upgrade my project.'\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml"},{"path":"remotion-upgrade/assets/remotion-icon.svg","content":"<svg width=\"100\" height=\"100\" viewBox=\"20 30 363 363\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Remotion</title>\n<path d=\"M148.332 92.9015C143.307 93.1742 139.259 93.9713 135.179 95.5236C133.144 96.2893 129.809 97.957 127.973 99.1108C120.295 103.925 114.443 111.162 111.391 119.584C110.782 121.252 109.136 126.57 108.076 130.23C101.018 154.7 97.0112 181.456 96.1511 209.776C96.0148 214.286 96.0148 225.026 96.1511 229.463C96.728 248.237 98.5216 265.187 101.773 282.472C103.095 289.468 105.213 298.866 106.44 303.135C108.947 311.809 114.065 319.193 121.344 324.605C126.221 328.234 131.759 330.668 137.895 331.863C140.853 332.44 144.755 332.702 147.629 332.514C151.604 332.251 159.491 331.192 165.9 330.049C194.786 324.899 221.469 315.679 245.666 302.485C260.99 294.125 274.09 285.074 286.729 274.092C299.326 263.163 310.066 251.405 319.516 238.21C321.708 235.158 322.81 233.375 323.911 231.131C326.743 225.341 328.075 219.583 328.064 213.143C328.064 207.143 326.932 201.815 324.488 196.361C323.313 193.728 322.191 191.84 319.674 188.253C310.402 175.048 300.112 163.542 287.568 152.361C268.122 135.034 245.026 120.822 219.235 110.302C213.644 108.026 208.138 106.022 201.509 103.851C187.475 99.2681 170.106 95.2929 155.411 93.3105C153.104 92.9959 149.968 92.8176 148.332 92.9015Z\" fill=\"#0B84F3\"/>\n</svg>\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.svg"},{"path":"remotion-upgrade/REFERENCE.md","content":"---\nname: remotion-upgrade\ndescription: Upgrade Remotion, and related packages\nversion: 4.0.540\n---\n\n# Upgrade Remotion\n\n1. Inspect the project manifests and lockfile to identify the package manager and workspaces. Preserve unrelated changes.\n2. Determine whether `@remotion/cli` is locally available. If it is, run:\n\n   ```bash\n   npx remotion upgrade\n   ```\n\n   This also updates project-local Remotion skills. Skip the manual upgrade below.\n\n3. If `@remotion/cli` is not available, upgrade manually:\n   - Get the latest stable Remotion version with `npm view remotion version`.\n   - Find every installed `remotion` and `@remotion/*` dependency across the project and upgrade them all to that exact version. Preserve their dependency sections and the project's workspace or catalog conventions.\n   - Read the `@remotion/studio` dependencies for the target Remotion version using `npm view @remotion/studio@<version> dependencies --json`. Align installed auxiliary packages such as `zod`, `mediabunny`, and `@huggingface/transformers` with the versions listed there. Use the `mediabunny` version for installed `@mediabunny/*` packages.\n   - Run the project's package manager to update its lockfile.\n4. If `@remotion/cli` is not available, update the installed Remotion skills:\n\n   ```bash\n   npx skills update remotion-best-practices remotion-captions remotion-create remotion-docs remotion-interactivity remotion-license remotion-maps remotion-markup remotion-multimedia remotion-render remotion-saas remotion-studio remotion-upgrade --yes\n   ```\n\n5. Review the manifest and lockfile diff. Ensure all Remotion packages use one version and installed auxiliary packages use their recommended versions. If the CLI is available, run `npx remotion versions` as an additional check.\n\nThe [Remotion releases](https://github.com/remotion-dev/remotion/releases) contain the changelog and may be useful for summarizing relevant changes after the upgrade.\n","type":"registry:file","target":"~/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md"},{"path":"SKILL.md","content":"---\nname: remotion-best-practices\ndescription: Router for all Remotion skills\nversion: 4.0.540\n---\n\n## Preserve user changes\n\nUsers may make edits in the code outside of the conversation.\n\nIf you detect a surprising change made in the meanwhile, don't overwrite it, assume it was intentional or ask for confirmation.\n\n## Creating a video\n\nIf the user asks to make, create, or build a new video or composition, load [Create a new Remotion video](./remotion-create/REFERENCE.md), whether or not a Remotion project already exists.\n\n## New project setup\n\nIf no Remotion project currently exists, load [Create a new Remotion project](./remotion-create/REFERENCE.md)\n\n## React Markup Best Practices\n\nIf you are writing Remotion React Markup, load [Remotion Markup Best Practices](./remotion-markup/REFERENCE.md)\n\n## Maps\n\nFor static maps, animated routes and markers, geographic explainers, Mapbox, MapLibre, MapTiler, GeoJSON, or 3D geographic flyovers, load [Remotion Maps](./remotion-maps/REFERENCE.md).\n\n## Multimedia\n\nFor achieving multimedia tasks in the browser, such as trimming, cropping videos, or getting metadata from them, load [Remotion Multimedia](./remotion-multimedia/REFERENCE.md)\n\n## Improving Interactivity\n\nBy structuring the Remotion markup well, we can allow users to interactively change things in the Studio and write back to code. If relevant: [Interactivity Best Practices](./remotion-interactivity/REFERENCE.md)\n\n## Open the preview\n\nIf the user asks to \"make\" a video, \"create\" a video, etc.\nDon't render the video by default unless they are very explicit. They want to instead see an interactive preview.\nAs soon as the project can run, start Studio and open the preview in the browser before building or editing the composition. Keep it open while you work so the user can watch progress and steer.\n\n### If you are using Cursor\n\nRun Studio without `--no-open` so it opens the browser automatically:\n\n```bash\nnpx remotion studio\n```\n\n### If you are using another agent client with an in-app browser\n\nYou can use the command above to let Studio open the browser, or run:\n\n```bash\nnpx remotion studio --no-open\n```\n\nThis will start a long-running process and print the server URL for the preview.  \nIf the server is already started, it will print the URL.\nIf you use `--no-open`, open the exact printed URL in the in-app browser and verify that Studio loads. Once a composition exists, verify that its video preview loads. If you cannot open it there, run Studio without `--no-open`.\nYou can visit a specific composition by navigating to `/[composition-id]`, for example `http://localhost:3000/MapAnimation`.\n\n:::note\nThe Studio supports WebMCP tools.\n:::\n\n### If you do not have an in-app browser\n\nThis will open the Studio in the browser or refocus it if it is already open.\n\n```bash\nnpx remotion studio\n```\n\n### More options\n\nTo launch a project in Remotion Studio, open its exact local URL, or configure Studio CLI flags, load [Remotion Studio](./remotion-studio/REFERENCE.md).\n\n## Render the video\n\nOnly render if the user is very explicit in asking for it.  \nE.g. \"Render the video\", \"Export\", \"Give me the MP4\".\n\nThe preview also has a more intuitive rendering interface, so consider using it instead of the command line for rendering.\n\n```\nnpx remotion render\n```\n\nFor more options, see [Rendering](./remotion-render/REFERENCE.md).\n\nFor advanced rendering beyond simple `npx remotion render`, see: [Rendering Best Practices](./remotion-render/REFERENCE.md)\n\n## Captions\n\nWhen working with Captions, load [Remotion Captions](./remotion-captions/REFERENCE.md).\n\n## Creating a SaaS, automation or application\n\nUse the [Remotion SaaS skill](./remotion-saas/REFERENCE.md) for knowledge about Remotion-powered SaaS apps, such as `<Player>`, rendering on Lambda, Vercel, Cloudflare, via Express.js, client-side rendering, or for finding the right SaaS template.\n\n## Looking up Remotion APIs and documentation\n\nTo find and read current Remotion documentation, load [Remotion Docs](./remotion-docs/REFERENCE.md).\n\n## Licensing\n\nFor Remotion license information, FAQs, terms, or buying a license, load [Remotion License](./remotion-license/REFERENCE.md).\n\n## Upgrading\n\nTo upgrade Remotion, related packages, compatible Mediabunny packages, and installed Remotion Agent Skills, load [Remotion Upgrade](./remotion-upgrade/REFERENCE.md).\n","type":"registry:file","target":"~/skills/remotion-best-practices/SKILL.md"}]}